Migrate XML themes to Compose (#10152)
This commit is contained in:
parent
00afee83b8
commit
255ed50685
@ -165,7 +165,6 @@ dependencies {
|
|||||||
implementation(compose.ui.util)
|
implementation(compose.ui.util)
|
||||||
implementation(compose.accompanist.webview)
|
implementation(compose.accompanist.webview)
|
||||||
implementation(compose.accompanist.permissions)
|
implementation(compose.accompanist.permissions)
|
||||||
implementation(compose.accompanist.themeadapter)
|
|
||||||
implementation(compose.accompanist.systemuicontroller)
|
implementation(compose.accompanist.systemuicontroller)
|
||||||
lintChecks(compose.lintchecks)
|
lintChecks(compose.lintchecks)
|
||||||
|
|
||||||
|
@ -1,54 +1,62 @@
|
|||||||
package eu.kanade.presentation.theme
|
package eu.kanade.presentation.theme
|
||||||
|
|
||||||
import androidx.appcompat.view.ContextThemeWrapper
|
import androidx.compose.foundation.isSystemInDarkTheme
|
||||||
|
import androidx.compose.material3.ColorScheme
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.ReadOnlyComposable
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.platform.LocalLayoutDirection
|
import eu.kanade.domain.ui.UiPreferences
|
||||||
import com.google.accompanist.themeadapter.material3.createMdc3Theme
|
|
||||||
import eu.kanade.domain.ui.model.AppTheme
|
import eu.kanade.domain.ui.model.AppTheme
|
||||||
import eu.kanade.tachiyomi.ui.base.delegate.ThemingDelegate
|
import eu.kanade.presentation.theme.colorscheme.GreenAppleColorScheme
|
||||||
|
import eu.kanade.presentation.theme.colorscheme.LavenderColorScheme
|
||||||
@Composable
|
import eu.kanade.presentation.theme.colorscheme.MidnightDuskColorScheme
|
||||||
fun TachiyomiTheme(content: @Composable () -> Unit) {
|
import eu.kanade.presentation.theme.colorscheme.MonetColorScheme
|
||||||
val context = LocalContext.current
|
import eu.kanade.presentation.theme.colorscheme.StrawberryColorScheme
|
||||||
val layoutDirection = LocalLayoutDirection.current
|
import eu.kanade.presentation.theme.colorscheme.TachiyomiColorScheme
|
||||||
|
import eu.kanade.presentation.theme.colorscheme.TakoColorScheme
|
||||||
val (colorScheme, typography) = createMdc3Theme(
|
import eu.kanade.presentation.theme.colorscheme.TealTurqoiseColorScheme
|
||||||
context = context,
|
import eu.kanade.presentation.theme.colorscheme.TidalWaveColorScheme
|
||||||
layoutDirection = layoutDirection,
|
import eu.kanade.presentation.theme.colorscheme.YinYangColorScheme
|
||||||
)
|
import eu.kanade.presentation.theme.colorscheme.YotsubaColorScheme
|
||||||
|
import uy.kohesive.injekt.Injekt
|
||||||
MaterialTheme(
|
import uy.kohesive.injekt.api.get
|
||||||
colorScheme = colorScheme!!,
|
|
||||||
typography = typography!!,
|
|
||||||
content = content,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun TachiyomiTheme(
|
fun TachiyomiTheme(
|
||||||
appTheme: AppTheme,
|
appTheme: AppTheme? = null,
|
||||||
amoled: Boolean,
|
amoled: Boolean? = null,
|
||||||
content: @Composable () -> Unit,
|
content: @Composable () -> Unit,
|
||||||
) {
|
) {
|
||||||
val originalContext = LocalContext.current
|
|
||||||
val layoutDirection = LocalLayoutDirection.current
|
|
||||||
val themedContext = remember(appTheme, originalContext) {
|
|
||||||
val themeResIds = ThemingDelegate.getThemeResIds(appTheme, amoled)
|
|
||||||
themeResIds.fold(originalContext) { context, themeResId ->
|
|
||||||
ContextThemeWrapper(context, themeResId)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
val (colorScheme, typography) = createMdc3Theme(
|
|
||||||
context = themedContext,
|
|
||||||
layoutDirection = layoutDirection,
|
|
||||||
)
|
|
||||||
|
|
||||||
MaterialTheme(
|
MaterialTheme(
|
||||||
colorScheme = colorScheme!!,
|
colorScheme = getThemeColorScheme(appTheme, amoled),
|
||||||
typography = typography!!,
|
|
||||||
content = content,
|
content = content,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
@ReadOnlyComposable
|
||||||
|
private fun getThemeColorScheme(
|
||||||
|
appTheme: AppTheme?,
|
||||||
|
amoled: Boolean?,
|
||||||
|
): ColorScheme {
|
||||||
|
val uiPreferences = Injekt.get<UiPreferences>()
|
||||||
|
val colorScheme = when (appTheme ?: uiPreferences.appTheme().get()) {
|
||||||
|
AppTheme.DEFAULT -> TachiyomiColorScheme
|
||||||
|
AppTheme.MONET -> MonetColorScheme(LocalContext.current)
|
||||||
|
AppTheme.GREEN_APPLE -> GreenAppleColorScheme
|
||||||
|
AppTheme.LAVENDER -> LavenderColorScheme
|
||||||
|
AppTheme.MIDNIGHT_DUSK -> MidnightDuskColorScheme
|
||||||
|
AppTheme.STRAWBERRY_DAIQUIRI -> StrawberryColorScheme
|
||||||
|
AppTheme.TAKO -> TakoColorScheme
|
||||||
|
AppTheme.TEALTURQUOISE -> TealTurqoiseColorScheme
|
||||||
|
AppTheme.TIDAL_WAVE -> TidalWaveColorScheme
|
||||||
|
AppTheme.YINYANG -> YinYangColorScheme
|
||||||
|
AppTheme.YOTSUBA -> YotsubaColorScheme
|
||||||
|
else -> TachiyomiColorScheme
|
||||||
|
}
|
||||||
|
return colorScheme.getColorScheme(
|
||||||
|
isSystemInDarkTheme(),
|
||||||
|
amoled ?: uiPreferences.themeDarkAmoled().get(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
package eu.kanade.presentation.theme.colorscheme
|
||||||
|
|
||||||
|
import androidx.compose.material3.ColorScheme
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
|
||||||
|
internal abstract class BaseColorScheme {
|
||||||
|
|
||||||
|
abstract val darkScheme: ColorScheme
|
||||||
|
abstract val lightScheme: ColorScheme
|
||||||
|
|
||||||
|
fun getColorScheme(isDark: Boolean, isAmoled: Boolean): ColorScheme {
|
||||||
|
return (if (isDark) darkScheme else lightScheme)
|
||||||
|
.let {
|
||||||
|
if (isDark && isAmoled) {
|
||||||
|
it.copy(
|
||||||
|
background = Color.Black,
|
||||||
|
onBackground = Color.White,
|
||||||
|
surface = Color.Black,
|
||||||
|
onSurface = Color.White,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
it
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,71 @@
|
|||||||
|
package eu.kanade.presentation.theme.colorscheme
|
||||||
|
|
||||||
|
import androidx.compose.material3.darkColorScheme
|
||||||
|
import androidx.compose.material3.lightColorScheme
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Colors for Green Apple theme
|
||||||
|
* Original color scheme by CarlosEsco, Jays2Kings and CrepeTF
|
||||||
|
* M3 colors generated by Material Theme Builder (https://goo.gle/material-theme-builder-web)
|
||||||
|
*
|
||||||
|
* Key colors:
|
||||||
|
* Primary #188140
|
||||||
|
* Secondary #188140
|
||||||
|
* Tertiary #D33131
|
||||||
|
* Neutral #5D5F5B
|
||||||
|
*/
|
||||||
|
internal object GreenAppleColorScheme : BaseColorScheme() {
|
||||||
|
|
||||||
|
override val darkScheme = darkColorScheme(
|
||||||
|
primary = Color(0xFF7ADB8F),
|
||||||
|
onPrimary = Color(0xFF003915),
|
||||||
|
primaryContainer = Color(0xFF005322),
|
||||||
|
onPrimaryContainer = Color(0xFF96F8A9),
|
||||||
|
inversePrimary = Color(0xFF006D2F),
|
||||||
|
secondary = Color(0xFF7ADB8F),
|
||||||
|
onSecondary = Color(0xFF003915),
|
||||||
|
secondaryContainer = Color(0xFF005322),
|
||||||
|
onSecondaryContainer = Color(0xFF96F8A9),
|
||||||
|
tertiary = Color(0xFFFFB3AA),
|
||||||
|
onTertiary = Color(0xFF680006),
|
||||||
|
tertiaryContainer = Color(0xFF93000D),
|
||||||
|
onTertiaryContainer = Color(0xFFFFDAD5),
|
||||||
|
background = Color(0xFF1A1C19),
|
||||||
|
onBackground = Color(0xFFE1E3DD),
|
||||||
|
surface = Color(0xFF1A1C19),
|
||||||
|
onSurface = Color(0xFFE1E3DD),
|
||||||
|
surfaceVariant = Color(0xFF414941),
|
||||||
|
onSurfaceVariant = Color(0xFFC1C8BE),
|
||||||
|
surfaceTint = Color(0xFF7ADB8F),
|
||||||
|
inverseSurface = Color(0xFFE1E3DD),
|
||||||
|
inverseOnSurface = Color(0xFF1A1C19),
|
||||||
|
outline = Color(0xFF8B9389),
|
||||||
|
)
|
||||||
|
|
||||||
|
override val lightScheme = lightColorScheme(
|
||||||
|
primary = Color(0xFF006D2F),
|
||||||
|
onPrimary = Color(0xFFFFFFFF),
|
||||||
|
primaryContainer = Color(0xFF96F8A9),
|
||||||
|
onPrimaryContainer = Color(0xFF002109),
|
||||||
|
inversePrimary = Color(0xFF7ADB8F),
|
||||||
|
secondary = Color(0xFF006D2F),
|
||||||
|
onSecondary = Color(0xFFFFFFFF),
|
||||||
|
secondaryContainer = Color(0xFF96F8A9),
|
||||||
|
onSecondaryContainer = Color(0xFF002109),
|
||||||
|
tertiary = Color(0xFFB91D22),
|
||||||
|
onTertiary = Color(0xFFFFFFFF),
|
||||||
|
tertiaryContainer = Color(0xFFFFDAD5),
|
||||||
|
onTertiaryContainer = Color(0xFF410003),
|
||||||
|
background = Color(0xFFFBFDF7),
|
||||||
|
onBackground = Color(0xFF1A1C19),
|
||||||
|
surface = Color(0xFFFBFDF7),
|
||||||
|
onSurface = Color(0xFF1A1C19),
|
||||||
|
surfaceVariant = Color(0xFFDDE5DA),
|
||||||
|
onSurfaceVariant = Color(0xFF414941),
|
||||||
|
surfaceTint = Color(0xFF006D2F),
|
||||||
|
inverseSurface = Color(0xFF2F312E),
|
||||||
|
inverseOnSurface = Color(0xFFF0F2EC),
|
||||||
|
outline = Color(0xFF717970),
|
||||||
|
)
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
package eu.kanade.presentation.theme.colorscheme
|
||||||
|
|
||||||
|
import androidx.compose.material3.darkColorScheme
|
||||||
|
import androidx.compose.material3.lightColorScheme
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Colors for Lavender theme
|
||||||
|
* Color scheme by Osyx
|
||||||
|
*
|
||||||
|
* Key colors:
|
||||||
|
* Primary #A177FF
|
||||||
|
* Secondary #A177FF
|
||||||
|
* Tertiary #5E25E1
|
||||||
|
* Neutral #111129
|
||||||
|
*/
|
||||||
|
internal object LavenderColorScheme : BaseColorScheme() {
|
||||||
|
|
||||||
|
override val darkScheme = darkColorScheme(
|
||||||
|
primary = Color(0xFFA177FF),
|
||||||
|
onPrimary = Color(0xFF111129),
|
||||||
|
primaryContainer = Color(0xFFA177FF),
|
||||||
|
onPrimaryContainer = Color(0xFF111129),
|
||||||
|
inversePrimary = Color(0xFF006D2F),
|
||||||
|
secondary = Color(0xFFA177FF),
|
||||||
|
onSecondary = Color(0xFF111129),
|
||||||
|
secondaryContainer = Color(0xFFA177FF),
|
||||||
|
onSecondaryContainer = Color(0xFF111129),
|
||||||
|
tertiary = Color(0xFF5E25E1),
|
||||||
|
onTertiary = Color(0xFFE8E8E8),
|
||||||
|
tertiaryContainer = Color(0xFF111129),
|
||||||
|
onTertiaryContainer = Color(0xFFDEE8FF),
|
||||||
|
background = Color(0xFF111129),
|
||||||
|
onBackground = Color(0xFFDEE8FF),
|
||||||
|
surface = Color(0xFF111129),
|
||||||
|
onSurface = Color(0xFFDEE8FF),
|
||||||
|
surfaceVariant = Color(0x2CB6B6B6),
|
||||||
|
onSurfaceVariant = Color(0xFFE8E8E8),
|
||||||
|
surfaceTint = Color(0xFFA177FF),
|
||||||
|
inverseSurface = Color(0xFF221247),
|
||||||
|
inverseOnSurface = Color(0xFFDEE8FF),
|
||||||
|
outline = Color(0xA8905FFF),
|
||||||
|
)
|
||||||
|
|
||||||
|
override val lightScheme = lightColorScheme(
|
||||||
|
primary = Color(0xFF7B46AF),
|
||||||
|
onPrimary = Color(0xFFEDE2FF),
|
||||||
|
primaryContainer = Color(0xFF7B46AF),
|
||||||
|
onPrimaryContainer = Color(0xFFEDE2FF),
|
||||||
|
inversePrimary = Color(0xFFD6BAFF),
|
||||||
|
secondary = Color(0xFF7B46AF),
|
||||||
|
onSecondary = Color(0xFFEDE2FF),
|
||||||
|
secondaryContainer = Color(0xFF7B46AF),
|
||||||
|
onSecondaryContainer = Color(0xFFEDE2FF),
|
||||||
|
tertiary = Color(0xFFEDE2FF),
|
||||||
|
onTertiary = Color(0xFF7B46AF),
|
||||||
|
tertiaryContainer = Color(0xFFEDE2FF),
|
||||||
|
onTertiaryContainer = Color(0xFF7B46AF),
|
||||||
|
background = Color(0xFFEDE2FF),
|
||||||
|
onBackground = Color(0xFF1B1B22),
|
||||||
|
surface = Color(0xFFEDE2FF),
|
||||||
|
onSurface = Color(0xFF1B1B22),
|
||||||
|
surfaceVariant = Color(0xFFB9B0CC),
|
||||||
|
onSurfaceVariant = Color(0xD849454E),
|
||||||
|
surfaceTint = Color(0xFF7B46AF),
|
||||||
|
inverseSurface = Color(0xFF313033),
|
||||||
|
inverseOnSurface = Color(0xFFF3EFF4),
|
||||||
|
outline = Color(0xFF7B46AF),
|
||||||
|
)
|
||||||
|
}
|
@ -0,0 +1,71 @@
|
|||||||
|
package eu.kanade.presentation.theme.colorscheme
|
||||||
|
|
||||||
|
import androidx.compose.material3.darkColorScheme
|
||||||
|
import androidx.compose.material3.lightColorScheme
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Colors for Midnight Dusk theme
|
||||||
|
* Original color scheme by CrepeTF
|
||||||
|
* M3 color scheme generated by Material Theme Builder (https://goo.gle/material-theme-builder-web)
|
||||||
|
*
|
||||||
|
* Key colors:
|
||||||
|
* Primary #F02475
|
||||||
|
* Secondary #F02475
|
||||||
|
* Tertiary #7A5733
|
||||||
|
* Neutral #16151D
|
||||||
|
*/
|
||||||
|
internal object MidnightDuskColorScheme : BaseColorScheme() {
|
||||||
|
|
||||||
|
override val darkScheme = darkColorScheme(
|
||||||
|
primary = Color(0xFFF02475),
|
||||||
|
onPrimary = Color(0xFFFFFFFF),
|
||||||
|
primaryContainer = Color(0xFFBD1C5C),
|
||||||
|
onPrimaryContainer = Color(0xFFFFFFFF),
|
||||||
|
inversePrimary = Color(0xFFF02475),
|
||||||
|
secondary = Color(0xFFF02475),
|
||||||
|
onSecondary = Color(0xFFFFFFFF),
|
||||||
|
secondaryContainer = Color(0xFFF02475),
|
||||||
|
onSecondaryContainer = Color(0xFFFFFFFF),
|
||||||
|
tertiary = Color(0xFF55971C),
|
||||||
|
onTertiary = Color(0xFFFFFFFF),
|
||||||
|
tertiaryContainer = Color(0xFF386412),
|
||||||
|
onTertiaryContainer = Color(0xFFE5E1E5),
|
||||||
|
background = Color(0xFF16151D),
|
||||||
|
onBackground = Color(0xFFE5E1E5),
|
||||||
|
surface = Color(0xFF16151D),
|
||||||
|
onSurface = Color(0xFFE5E1E5),
|
||||||
|
surfaceVariant = Color(0xFF524346),
|
||||||
|
onSurfaceVariant = Color(0xFFD6C1C4),
|
||||||
|
surfaceTint = Color(0xFFF02475),
|
||||||
|
inverseSurface = Color(0xFF333043),
|
||||||
|
inverseOnSurface = Color(0xFFFFFFFF),
|
||||||
|
outline = Color(0xFF9F8C8F),
|
||||||
|
)
|
||||||
|
|
||||||
|
override val lightScheme = lightColorScheme(
|
||||||
|
primary = Color(0xFFBB0054),
|
||||||
|
onPrimary = Color(0xFFFFFFFF),
|
||||||
|
primaryContainer = Color(0xFFFFD9E1),
|
||||||
|
onPrimaryContainer = Color(0xFF3F0017),
|
||||||
|
inversePrimary = Color(0xFFFFB1C4),
|
||||||
|
secondary = Color(0xFFBB0054),
|
||||||
|
onSecondary = Color(0xFFFFFFFF),
|
||||||
|
secondaryContainer = Color(0xFFFFD9E1),
|
||||||
|
onSecondaryContainer = Color(0xFF3F0017),
|
||||||
|
tertiary = Color(0xFF006638),
|
||||||
|
onTertiary = Color(0xFFFFFFFF),
|
||||||
|
tertiaryContainer = Color(0xFF00894b),
|
||||||
|
onTertiaryContainer = Color(0xFF2D1600),
|
||||||
|
background = Color(0xFFFFFBFF),
|
||||||
|
onBackground = Color(0xFF1C1B1F),
|
||||||
|
surface = Color(0xFFFFFBFF),
|
||||||
|
onSurface = Color(0xFF1C1B1F),
|
||||||
|
surfaceVariant = Color(0xFFF3DDE0),
|
||||||
|
onSurfaceVariant = Color(0xFF524346),
|
||||||
|
surfaceTint = Color(0xFFBB0054),
|
||||||
|
inverseSurface = Color(0xFF313033),
|
||||||
|
inverseOnSurface = Color(0xFFF4F0F4),
|
||||||
|
outline = Color(0xFF847376),
|
||||||
|
)
|
||||||
|
}
|
@ -0,0 +1,125 @@
|
|||||||
|
package eu.kanade.presentation.theme.colorscheme
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
import android.app.UiModeManager
|
||||||
|
import android.app.WallpaperManager
|
||||||
|
import android.content.Context
|
||||||
|
import android.graphics.Bitmap
|
||||||
|
import android.os.Build
|
||||||
|
import androidx.annotation.RequiresApi
|
||||||
|
import androidx.compose.material3.ColorScheme
|
||||||
|
import androidx.compose.material3.dynamicDarkColorScheme
|
||||||
|
import androidx.compose.material3.dynamicLightColorScheme
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.core.content.getSystemService
|
||||||
|
import com.google.android.material.color.utilities.Hct
|
||||||
|
import com.google.android.material.color.utilities.MaterialDynamicColors
|
||||||
|
import com.google.android.material.color.utilities.QuantizerCelebi
|
||||||
|
import com.google.android.material.color.utilities.SchemeContent
|
||||||
|
import com.google.android.material.color.utilities.Score
|
||||||
|
|
||||||
|
internal class MonetColorScheme(context: Context) : BaseColorScheme() {
|
||||||
|
|
||||||
|
private val monet = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||||
|
MonetSystemColorScheme(context)
|
||||||
|
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
||||||
|
val seed = WallpaperManager.getInstance(context)
|
||||||
|
.getWallpaperColors(WallpaperManager.FLAG_SYSTEM)
|
||||||
|
?.primaryColor
|
||||||
|
?.toArgb()
|
||||||
|
if (seed != null) {
|
||||||
|
MonetCompatColorScheme(context, seed)
|
||||||
|
} else {
|
||||||
|
TachiyomiColorScheme
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
TachiyomiColorScheme
|
||||||
|
}
|
||||||
|
|
||||||
|
override val darkScheme
|
||||||
|
get() = monet.darkScheme
|
||||||
|
|
||||||
|
override val lightScheme
|
||||||
|
get() = monet.lightScheme
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
@Suppress("Unused")
|
||||||
|
@SuppressLint("RestrictedApi")
|
||||||
|
fun extractSeedColorFromImage(bitmap: Bitmap): Int? {
|
||||||
|
val width = bitmap.width
|
||||||
|
val height = bitmap.height
|
||||||
|
val bitmapPixels = IntArray(width * height)
|
||||||
|
bitmap.getPixels(bitmapPixels, 0, width, 0, 0, width, height)
|
||||||
|
return Score.score(QuantizerCelebi.quantize(bitmapPixels, 128), 1, 0)[0]
|
||||||
|
.takeIf { it != 0 } // Don't take fallback color
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequiresApi(Build.VERSION_CODES.S)
|
||||||
|
private class MonetSystemColorScheme(context: Context) : BaseColorScheme() {
|
||||||
|
override val lightScheme = dynamicLightColorScheme(context)
|
||||||
|
override val darkScheme = dynamicDarkColorScheme(context)
|
||||||
|
}
|
||||||
|
|
||||||
|
private class MonetCompatColorScheme(context: Context, seed: Int) : BaseColorScheme() {
|
||||||
|
|
||||||
|
override val lightScheme = generateColorSchemeFromSeed(context = context, seed = seed, dark = false)
|
||||||
|
override val darkScheme = generateColorSchemeFromSeed(context = context, seed = seed, dark = true)
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private fun Int.toComposeColor(): Color = Color(this)
|
||||||
|
|
||||||
|
@SuppressLint("PrivateResource", "RestrictedApi")
|
||||||
|
private fun generateColorSchemeFromSeed(context: Context, seed: Int, dark: Boolean): ColorScheme {
|
||||||
|
val scheme = SchemeContent(
|
||||||
|
Hct.fromInt(seed),
|
||||||
|
dark,
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
|
||||||
|
context.getSystemService<UiModeManager>()?.contrast?.toDouble() ?: 0.0
|
||||||
|
} else {
|
||||||
|
0.0
|
||||||
|
},
|
||||||
|
)
|
||||||
|
val dynamicColors = MaterialDynamicColors()
|
||||||
|
return ColorScheme(
|
||||||
|
primary = dynamicColors.primary().getArgb(scheme).toComposeColor(),
|
||||||
|
onPrimary = dynamicColors.onPrimary().getArgb(scheme).toComposeColor(),
|
||||||
|
primaryContainer = dynamicColors.primaryContainer().getArgb(scheme).toComposeColor(),
|
||||||
|
onPrimaryContainer = dynamicColors.onPrimaryContainer().getArgb(scheme).toComposeColor(),
|
||||||
|
inversePrimary = dynamicColors.inversePrimary().getArgb(scheme).toComposeColor(),
|
||||||
|
secondary = dynamicColors.secondary().getArgb(scheme).toComposeColor(),
|
||||||
|
onSecondary = dynamicColors.onSecondary().getArgb(scheme).toComposeColor(),
|
||||||
|
secondaryContainer = dynamicColors.secondaryContainer().getArgb(scheme).toComposeColor(),
|
||||||
|
onSecondaryContainer = dynamicColors.onSecondaryContainer().getArgb(scheme).toComposeColor(),
|
||||||
|
tertiary = dynamicColors.tertiary().getArgb(scheme).toComposeColor(),
|
||||||
|
onTertiary = dynamicColors.onTertiary().getArgb(scheme).toComposeColor(),
|
||||||
|
tertiaryContainer = dynamicColors.tertiary().getArgb(scheme).toComposeColor(),
|
||||||
|
onTertiaryContainer = dynamicColors.onTertiaryContainer().getArgb(scheme).toComposeColor(),
|
||||||
|
background = dynamicColors.background().getArgb(scheme).toComposeColor(),
|
||||||
|
onBackground = dynamicColors.onBackground().getArgb(scheme).toComposeColor(),
|
||||||
|
surface = dynamicColors.surface().getArgb(scheme).toComposeColor(),
|
||||||
|
onSurface = dynamicColors.onSurface().getArgb(scheme).toComposeColor(),
|
||||||
|
surfaceVariant = dynamicColors.surfaceVariant().getArgb(scheme).toComposeColor(),
|
||||||
|
onSurfaceVariant = dynamicColors.onSurfaceVariant().getArgb(scheme).toComposeColor(),
|
||||||
|
surfaceTint = dynamicColors.surfaceTint().getArgb(scheme).toComposeColor(),
|
||||||
|
inverseSurface = dynamicColors.inverseSurface().getArgb(scheme).toComposeColor(),
|
||||||
|
inverseOnSurface = dynamicColors.inverseOnSurface().getArgb(scheme).toComposeColor(),
|
||||||
|
error = dynamicColors.error().getArgb(scheme).toComposeColor(),
|
||||||
|
onError = dynamicColors.onError().getArgb(scheme).toComposeColor(),
|
||||||
|
errorContainer = dynamicColors.errorContainer().getArgb(scheme).toComposeColor(),
|
||||||
|
onErrorContainer = dynamicColors.onErrorContainer().getArgb(scheme).toComposeColor(),
|
||||||
|
outline = dynamicColors.outline().getArgb(scheme).toComposeColor(),
|
||||||
|
outlineVariant = dynamicColors.outlineVariant().getArgb(scheme).toComposeColor(),
|
||||||
|
scrim = Color.Black,
|
||||||
|
surfaceBright = dynamicColors.surfaceBright().getArgb(scheme).toComposeColor(),
|
||||||
|
surfaceDim = dynamicColors.surfaceDim().getArgb(scheme).toComposeColor(),
|
||||||
|
surfaceContainer = dynamicColors.surfaceContainer().getArgb(scheme).toComposeColor(),
|
||||||
|
surfaceContainerHigh = dynamicColors.surfaceContainerHigh().getArgb(scheme).toComposeColor(),
|
||||||
|
surfaceContainerHighest = dynamicColors.surfaceContainerHighest().getArgb(scheme).toComposeColor(),
|
||||||
|
surfaceContainerLow = dynamicColors.surfaceContainerLow().getArgb(scheme).toComposeColor(),
|
||||||
|
surfaceContainerLowest = dynamicColors.surfaceContainerLowest().getArgb(scheme).toComposeColor(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,71 @@
|
|||||||
|
package eu.kanade.presentation.theme.colorscheme
|
||||||
|
|
||||||
|
import androidx.compose.material3.darkColorScheme
|
||||||
|
import androidx.compose.material3.lightColorScheme
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Colors for Strawberry Daiquiri theme
|
||||||
|
* Original color scheme by Soitora
|
||||||
|
* M3 color scheme generated by Material Theme Builder (https://goo.gle/material-theme-builder-web)
|
||||||
|
*
|
||||||
|
* Key colors:
|
||||||
|
* Primary #ED4A65
|
||||||
|
* Secondary #ED4A65
|
||||||
|
* Tertiary #775930
|
||||||
|
* Neutral #655C5C
|
||||||
|
*/
|
||||||
|
internal object StrawberryColorScheme : BaseColorScheme() {
|
||||||
|
|
||||||
|
override val darkScheme = darkColorScheme(
|
||||||
|
primary = Color(0xFFFFB2B9),
|
||||||
|
onPrimary = Color(0xFF67001B),
|
||||||
|
primaryContainer = Color(0xFF91002A),
|
||||||
|
onPrimaryContainer = Color(0xFFFFDADD),
|
||||||
|
inversePrimary = Color(0xFFB61E40),
|
||||||
|
secondary = Color(0xFFFFB2B9),
|
||||||
|
onSecondary = Color(0xFF67001B),
|
||||||
|
secondaryContainer = Color(0xFF91002A),
|
||||||
|
onSecondaryContainer = Color(0xFFFFDADD),
|
||||||
|
tertiary = Color(0xFFE8C08E),
|
||||||
|
onTertiary = Color(0xFF432C06),
|
||||||
|
tertiaryContainer = Color(0xFF5D421B),
|
||||||
|
onTertiaryContainer = Color(0xFFFFDDB1),
|
||||||
|
background = Color(0xFF201A1A),
|
||||||
|
onBackground = Color(0xFFECDFDF),
|
||||||
|
surface = Color(0xFF201A1A),
|
||||||
|
onSurface = Color(0xFFECDFDF),
|
||||||
|
surfaceVariant = Color(0xFF534344),
|
||||||
|
onSurfaceVariant = Color(0xFFD7C1C2),
|
||||||
|
surfaceTint = Color(0xFFFFB2B9),
|
||||||
|
inverseSurface = Color(0xFFECDFDF),
|
||||||
|
inverseOnSurface = Color(0xFF201A1A),
|
||||||
|
outline = Color(0xFFA08C8D),
|
||||||
|
)
|
||||||
|
|
||||||
|
override val lightScheme = lightColorScheme(
|
||||||
|
primary = Color(0xFFB61E40),
|
||||||
|
onPrimary = Color(0xFFFFFFFF),
|
||||||
|
primaryContainer = Color(0xFFFFDADD),
|
||||||
|
onPrimaryContainer = Color(0xFF40000D),
|
||||||
|
inversePrimary = Color(0xFFFFB2B9),
|
||||||
|
secondary = Color(0xFFB61E40),
|
||||||
|
onSecondary = Color(0xFFFFFFFF),
|
||||||
|
secondaryContainer = Color(0xFFFFDADD),
|
||||||
|
onSecondaryContainer = Color(0xFF40000D),
|
||||||
|
tertiary = Color(0xFF775930),
|
||||||
|
onTertiary = Color(0xFFFFFFFF),
|
||||||
|
tertiaryContainer = Color(0xFFFFDDB1),
|
||||||
|
onTertiaryContainer = Color(0xFF2A1800),
|
||||||
|
background = Color(0xFFFCFCFC),
|
||||||
|
onBackground = Color(0xFF201A1A),
|
||||||
|
surface = Color(0xFFFCFCFC),
|
||||||
|
onSurface = Color(0xFF201A1A),
|
||||||
|
surfaceVariant = Color(0xFFF4DDDD),
|
||||||
|
onSurfaceVariant = Color(0xFF534344),
|
||||||
|
surfaceTint = Color(0xFFB61E40),
|
||||||
|
inverseSurface = Color(0xFF362F2F),
|
||||||
|
inverseOnSurface = Color(0xFFFBEDED),
|
||||||
|
outline = Color(0xFF857374),
|
||||||
|
)
|
||||||
|
}
|
@ -0,0 +1,80 @@
|
|||||||
|
package eu.kanade.presentation.theme.colorscheme
|
||||||
|
|
||||||
|
import androidx.compose.material3.darkColorScheme
|
||||||
|
import androidx.compose.material3.lightColorScheme
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Colors for Default theme
|
||||||
|
* M3 colors generated by Material Theme Builder (https://goo.gle/material-theme-builder-web)
|
||||||
|
*
|
||||||
|
* Key colors:
|
||||||
|
* Primary #2979FF
|
||||||
|
* Secondary #2979FF
|
||||||
|
* Tertiary #47A84A
|
||||||
|
* Neutral #919094
|
||||||
|
*/
|
||||||
|
internal object TachiyomiColorScheme : BaseColorScheme() {
|
||||||
|
|
||||||
|
override val darkScheme = darkColorScheme(
|
||||||
|
primary = Color(0xFFB0C6FF),
|
||||||
|
onPrimary = Color(0xFF002D6E),
|
||||||
|
primaryContainer = Color(0xFF00429B),
|
||||||
|
onPrimaryContainer = Color(0xFFD9E2FF),
|
||||||
|
inversePrimary = Color(0xFF0058CA),
|
||||||
|
secondary = Color(0xFFB0C6FF),
|
||||||
|
onSecondary = Color(0xFF002D6E),
|
||||||
|
secondaryContainer = Color(0xFF00429B),
|
||||||
|
onSecondaryContainer = Color(0xFFD9E2FF),
|
||||||
|
tertiary = Color(0xFF7ADC77),
|
||||||
|
onTertiary = Color(0xFF003909),
|
||||||
|
tertiaryContainer = Color(0xFF005312),
|
||||||
|
onTertiaryContainer = Color(0xFF95F990),
|
||||||
|
background = Color(0xFF1B1B1F),
|
||||||
|
onBackground = Color(0xFFE3E2E6),
|
||||||
|
surface = Color(0xFF1B1B1F),
|
||||||
|
onSurface = Color(0xFFE3E2E6),
|
||||||
|
surfaceVariant = Color(0xFF44464F),
|
||||||
|
onSurfaceVariant = Color(0xFFC5C6D0),
|
||||||
|
surfaceTint = Color(0xFFB0C6FF),
|
||||||
|
inverseSurface = Color(0xFFE3E2E6),
|
||||||
|
inverseOnSurface = Color(0xFF1B1B1F),
|
||||||
|
error = Color(0xFFFFB4AB),
|
||||||
|
onError = Color(0xFF690005),
|
||||||
|
errorContainer = Color(0xFF93000A),
|
||||||
|
onErrorContainer = Color(0xFFFFDAD6),
|
||||||
|
outline = Color(0xFF8F9099),
|
||||||
|
outlineVariant = Color(0xFF44464F),
|
||||||
|
)
|
||||||
|
|
||||||
|
override val lightScheme = lightColorScheme(
|
||||||
|
primary = Color(0xFF0058CA),
|
||||||
|
onPrimary = Color(0xFFFFFFFF),
|
||||||
|
primaryContainer = Color(0xFFD9E2FF),
|
||||||
|
onPrimaryContainer = Color(0xFF001945),
|
||||||
|
inversePrimary = Color(0xFFB0C6FF),
|
||||||
|
secondary = Color(0xFF0058CA),
|
||||||
|
onSecondary = Color(0xFFFFFFFF),
|
||||||
|
secondaryContainer = Color(0xFFD9E2FF),
|
||||||
|
onSecondaryContainer = Color(0xFF001945),
|
||||||
|
tertiary = Color(0xFF006E1B),
|
||||||
|
onTertiary = Color(0xFFFFFFFF),
|
||||||
|
tertiaryContainer = Color(0xFF95F990),
|
||||||
|
onTertiaryContainer = Color(0xFF002203),
|
||||||
|
background = Color(0xFFFEFBFF),
|
||||||
|
onBackground = Color(0xFF1B1B1F),
|
||||||
|
surface = Color(0xFFFEFBFF),
|
||||||
|
onSurface = Color(0xFF1B1B1F),
|
||||||
|
surfaceVariant = Color(0xFFE1E2EC),
|
||||||
|
onSurfaceVariant = Color(0xFF44464F),
|
||||||
|
surfaceTint = Color(0xFF0058CA),
|
||||||
|
inverseSurface = Color(0xFF303034),
|
||||||
|
inverseOnSurface = Color(0xFFF2F0F4),
|
||||||
|
error = Color(0xFFBA1A1A),
|
||||||
|
onError = Color(0xFFFFFFFF),
|
||||||
|
errorContainer = Color(0xFFFFDAD6),
|
||||||
|
onErrorContainer = Color(0xFF410002),
|
||||||
|
outline = Color(0xFF757780),
|
||||||
|
outlineVariant = Color(0xFFC5C6D0),
|
||||||
|
)
|
||||||
|
}
|
@ -0,0 +1,71 @@
|
|||||||
|
package eu.kanade.presentation.theme.colorscheme
|
||||||
|
|
||||||
|
import androidx.compose.material3.darkColorScheme
|
||||||
|
import androidx.compose.material3.lightColorScheme
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Colors for Tako theme
|
||||||
|
* Original color scheme by ghostbear
|
||||||
|
* M3 color scheme generated by Material Theme Builder (https://goo.gle/material-theme-builder-web)
|
||||||
|
*
|
||||||
|
* Key colors:
|
||||||
|
* Primary #F3B375
|
||||||
|
* Secondary #F3B375
|
||||||
|
* Tertiary #66577E
|
||||||
|
* Neutral #21212E
|
||||||
|
*/
|
||||||
|
internal object TakoColorScheme : BaseColorScheme() {
|
||||||
|
|
||||||
|
override val darkScheme = darkColorScheme(
|
||||||
|
primary = Color(0xFFF3B375),
|
||||||
|
onPrimary = Color(0xFF38294E),
|
||||||
|
primaryContainer = Color(0xFFF3B375),
|
||||||
|
onPrimaryContainer = Color(0xFF38294E),
|
||||||
|
inversePrimary = Color(0xFF84531E),
|
||||||
|
secondary = Color(0xFFF3B375),
|
||||||
|
onSecondary = Color(0xFF38294E),
|
||||||
|
secondaryContainer = Color(0xFFF3B375),
|
||||||
|
onSecondaryContainer = Color(0xFF38294E),
|
||||||
|
tertiary = Color(0xFF66577E),
|
||||||
|
onTertiary = Color(0xFFF3B375),
|
||||||
|
tertiaryContainer = Color(0xFF4E4065),
|
||||||
|
onTertiaryContainer = Color(0xFFEDDCFF),
|
||||||
|
background = Color(0xFF21212E),
|
||||||
|
onBackground = Color(0xFFE3E0F2),
|
||||||
|
surface = Color(0xFF21212E),
|
||||||
|
onSurface = Color(0xFFE3E0F2),
|
||||||
|
surfaceVariant = Color(0xFF49454E),
|
||||||
|
onSurfaceVariant = Color(0xFFCBC4CE),
|
||||||
|
surfaceTint = Color(0xFF66577E),
|
||||||
|
inverseSurface = Color(0xFFE5E1E6),
|
||||||
|
inverseOnSurface = Color(0xFF1B1B1E),
|
||||||
|
outline = Color(0xFF958F99),
|
||||||
|
)
|
||||||
|
|
||||||
|
override val lightScheme = lightColorScheme(
|
||||||
|
primary = Color(0xFF66577E),
|
||||||
|
onPrimary = Color(0xFFF3B375),
|
||||||
|
primaryContainer = Color(0xFF66577E),
|
||||||
|
onPrimaryContainer = Color(0xFFF3B375),
|
||||||
|
inversePrimary = Color(0xFFD6BAFF),
|
||||||
|
secondary = Color(0xFF66577E),
|
||||||
|
onSecondary = Color(0xFFF3B375),
|
||||||
|
secondaryContainer = Color(0xFF66577E),
|
||||||
|
onSecondaryContainer = Color(0xFFF3B375),
|
||||||
|
tertiary = Color(0xFFF3B375),
|
||||||
|
onTertiary = Color(0xFF574360),
|
||||||
|
tertiaryContainer = Color(0xFFFDD6B0),
|
||||||
|
onTertiaryContainer = Color(0xFF221437),
|
||||||
|
background = Color(0xFFF7F5FF),
|
||||||
|
onBackground = Color(0xFF1B1B22),
|
||||||
|
surface = Color(0xFFF7F5FF),
|
||||||
|
onSurface = Color(0xFF1B1B22),
|
||||||
|
surfaceVariant = Color(0xFFE8E0EB),
|
||||||
|
onSurfaceVariant = Color(0xFF49454E),
|
||||||
|
surfaceTint = Color(0xFF66577E),
|
||||||
|
inverseSurface = Color(0xFF313033),
|
||||||
|
inverseOnSurface = Color(0xFFF3EFF4),
|
||||||
|
outline = Color(0xFF7A757E),
|
||||||
|
)
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
package eu.kanade.presentation.theme.colorscheme
|
||||||
|
|
||||||
|
import androidx.compose.material3.darkColorScheme
|
||||||
|
import androidx.compose.material3.lightColorScheme
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Colors for Teal Turqoise theme
|
||||||
|
*/
|
||||||
|
internal object TealTurqoiseColorScheme : BaseColorScheme() {
|
||||||
|
|
||||||
|
override val darkScheme = darkColorScheme(
|
||||||
|
primary = Color(0xFF40E0D0),
|
||||||
|
onPrimary = Color(0xFF000000),
|
||||||
|
primaryContainer = Color(0xFF40E0D0),
|
||||||
|
onPrimaryContainer = Color(0xFF000000),
|
||||||
|
inversePrimary = Color(0xFF008080),
|
||||||
|
secondary = Color(0xFF40E0D0),
|
||||||
|
onSecondary = Color(0xFF000000),
|
||||||
|
secondaryContainer = Color(0xFF18544E),
|
||||||
|
onSecondaryContainer = Color(0xFF40E0D0),
|
||||||
|
tertiary = Color(0xFFBF1F2F),
|
||||||
|
onTertiary = Color(0xFFFFFFFF),
|
||||||
|
tertiaryContainer = Color(0xFF200508),
|
||||||
|
onTertiaryContainer = Color(0xFFBF1F2F),
|
||||||
|
background = Color(0xFF202125),
|
||||||
|
onBackground = Color(0xFFDFDEDA),
|
||||||
|
surface = Color(0xFF202125),
|
||||||
|
onSurface = Color(0xFFDFDEDA),
|
||||||
|
surfaceVariant = Color(0xFF3F4947),
|
||||||
|
onSurfaceVariant = Color(0xFFDFDEDA),
|
||||||
|
surfaceTint = Color(0xFF40E0D0),
|
||||||
|
inverseSurface = Color(0xFFDFDEDA),
|
||||||
|
inverseOnSurface = Color(0xFF202125),
|
||||||
|
outline = Color(0xFF899391),
|
||||||
|
)
|
||||||
|
|
||||||
|
override val lightScheme = lightColorScheme(
|
||||||
|
primary = Color(0xFF008080),
|
||||||
|
onPrimary = Color(0xFFFFFFFF),
|
||||||
|
primaryContainer = Color(0xFF008080),
|
||||||
|
onPrimaryContainer = Color(0xFFFFFFFF),
|
||||||
|
inversePrimary = Color(0xFF40E0D0),
|
||||||
|
secondary = Color(0xFF008080),
|
||||||
|
onSecondary = Color(0xFFFFFFFF),
|
||||||
|
secondaryContainer = Color(0xFFBFDFDF),
|
||||||
|
onSecondaryContainer = Color(0xFF008080),
|
||||||
|
tertiary = Color(0xFFFF7F7F),
|
||||||
|
onTertiary = Color(0xFF000000),
|
||||||
|
tertiaryContainer = Color(0xFF2A1616),
|
||||||
|
onTertiaryContainer = Color(0xFFFF7F7F),
|
||||||
|
background = Color(0xFFFAFAFA),
|
||||||
|
onBackground = Color(0xFF050505),
|
||||||
|
surface = Color(0xFFFAFAFA),
|
||||||
|
onSurface = Color(0xFF050505),
|
||||||
|
surfaceVariant = Color(0xFFDAE5E2),
|
||||||
|
onSurfaceVariant = Color(0xFF050505),
|
||||||
|
surfaceTint = Color(0xFFBFDFDF),
|
||||||
|
inverseSurface = Color(0xFF050505),
|
||||||
|
inverseOnSurface = Color(0xFFFAFAFA),
|
||||||
|
outline = Color(0xFF6F7977),
|
||||||
|
)
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
package eu.kanade.presentation.theme.colorscheme
|
||||||
|
|
||||||
|
import androidx.compose.material3.darkColorScheme
|
||||||
|
import androidx.compose.material3.lightColorScheme
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Colors for Tidal Wave theme
|
||||||
|
* Original color scheme by NahutabDevelop
|
||||||
|
*
|
||||||
|
* Key colors:
|
||||||
|
* Primary #004152
|
||||||
|
* Secondary #5ed4fc
|
||||||
|
* Tertiary #92f7bc
|
||||||
|
* Neutral #16151D
|
||||||
|
*/
|
||||||
|
internal object TidalWaveColorScheme : BaseColorScheme() {
|
||||||
|
|
||||||
|
override val darkScheme = darkColorScheme(
|
||||||
|
primary = Color(0xFF5ed4fc),
|
||||||
|
onPrimary = Color(0xFF003544),
|
||||||
|
primaryContainer = Color(0xFF004d61),
|
||||||
|
onPrimaryContainer = Color(0xFFb8eaff),
|
||||||
|
inversePrimary = Color(0xFFa12b03),
|
||||||
|
secondary = Color(0xFF5ed4fc),
|
||||||
|
onSecondary = Color(0xFF003544),
|
||||||
|
secondaryContainer = Color(0xFF004d61),
|
||||||
|
onSecondaryContainer = Color(0xFFb8eaff),
|
||||||
|
tertiary = Color(0xFF92f7bc),
|
||||||
|
onTertiary = Color(0xFF001c3b),
|
||||||
|
tertiaryContainer = Color(0xFFc3fada),
|
||||||
|
onTertiaryContainer = Color(0xFF78ffd6),
|
||||||
|
background = Color(0xFF001c3b),
|
||||||
|
onBackground = Color(0xFFd5e3ff),
|
||||||
|
surface = Color(0xFF001c3b),
|
||||||
|
onSurface = Color(0xFFd5e3ff),
|
||||||
|
surfaceVariant = Color(0xFF40484c),
|
||||||
|
onSurfaceVariant = Color(0xFFbfc8cc),
|
||||||
|
surfaceTint = Color(0xFF5ed4fc),
|
||||||
|
inverseSurface = Color(0xFFffe3c4),
|
||||||
|
inverseOnSurface = Color(0xFF001c3b),
|
||||||
|
outline = Color(0xFF8a9296),
|
||||||
|
)
|
||||||
|
|
||||||
|
override val lightScheme = lightColorScheme(
|
||||||
|
primary = Color(0xFF006780),
|
||||||
|
onPrimary = Color(0xFFffffff),
|
||||||
|
primaryContainer = Color(0xFFB4D4DF),
|
||||||
|
onPrimaryContainer = Color(0xFF001f28),
|
||||||
|
inversePrimary = Color(0xFFff987f),
|
||||||
|
secondary = Color(0xFF006780),
|
||||||
|
onSecondary = Color(0xFFffffff),
|
||||||
|
secondaryContainer = Color(0xFFb8eaff),
|
||||||
|
onSecondaryContainer = Color(0xFF001f28),
|
||||||
|
tertiary = Color(0xFF92f7bc),
|
||||||
|
onTertiary = Color(0xFF001c3b),
|
||||||
|
tertiaryContainer = Color(0xFFc3fada),
|
||||||
|
onTertiaryContainer = Color(0xFF78ffd6),
|
||||||
|
background = Color(0xFFfdfbff),
|
||||||
|
onBackground = Color(0xFF001c3b),
|
||||||
|
surface = Color(0xFFfdfbff),
|
||||||
|
onSurface = Color(0xFF001c3b),
|
||||||
|
surfaceVariant = Color(0xFFdce4e8),
|
||||||
|
onSurfaceVariant = Color(0xFF40484c),
|
||||||
|
surfaceTint = Color(0xFF006780),
|
||||||
|
inverseSurface = Color(0xFF020400),
|
||||||
|
inverseOnSurface = Color(0xFFffe3c4),
|
||||||
|
outline = Color(0xFF70787c),
|
||||||
|
)
|
||||||
|
}
|
@ -0,0 +1,65 @@
|
|||||||
|
package eu.kanade.presentation.theme.colorscheme
|
||||||
|
|
||||||
|
import androidx.compose.material3.darkColorScheme
|
||||||
|
import androidx.compose.material3.lightColorScheme
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Colors for Yin & Yang theme
|
||||||
|
* Original color scheme by Riztard
|
||||||
|
* M3 colors generated by yours truly + tweaked manually
|
||||||
|
*/
|
||||||
|
internal object YinYangColorScheme : BaseColorScheme() {
|
||||||
|
|
||||||
|
override val darkScheme = darkColorScheme(
|
||||||
|
primary = Color(0xFFFFFFFF),
|
||||||
|
onPrimary = Color(0xFF5A5A5A),
|
||||||
|
primaryContainer = Color(0xFFFFFFFF),
|
||||||
|
onPrimaryContainer = Color(0xFF000000),
|
||||||
|
inversePrimary = Color(0xFFCECECE),
|
||||||
|
secondary = Color(0xFFFFFFFF),
|
||||||
|
onSecondary = Color(0xFF5A5A5A),
|
||||||
|
secondaryContainer = Color(0xFF717171),
|
||||||
|
onSecondaryContainer = Color(0xFFE4E4E4),
|
||||||
|
tertiary = Color(0xFF000000),
|
||||||
|
onTertiary = Color(0xFFFFFFFF),
|
||||||
|
tertiaryContainer = Color(0xFF00419E),
|
||||||
|
onTertiaryContainer = Color(0xFFD8E2FF),
|
||||||
|
background = Color(0xFF1E1E1E),
|
||||||
|
onBackground = Color(0xFFE6E6E6),
|
||||||
|
surface = Color(0xFF1E1E1E),
|
||||||
|
onSurface = Color(0xFFE6E6E6),
|
||||||
|
surfaceVariant = Color(0xFF4E4E4E),
|
||||||
|
onSurfaceVariant = Color(0xFFD1D1D1),
|
||||||
|
surfaceTint = Color(0xFFFFFFFF),
|
||||||
|
inverseSurface = Color(0xFFE6E6E6),
|
||||||
|
inverseOnSurface = Color(0xFF1E1E1E),
|
||||||
|
outline = Color(0xFF999999),
|
||||||
|
)
|
||||||
|
|
||||||
|
override val lightScheme = lightColorScheme(
|
||||||
|
primary = Color(0xFF000000),
|
||||||
|
onPrimary = Color(0xFFFFFFFF),
|
||||||
|
primaryContainer = Color(0xFF000000),
|
||||||
|
onPrimaryContainer = Color(0xFFFFFFFF),
|
||||||
|
inversePrimary = Color(0xFFA6A6A6),
|
||||||
|
secondary = Color(0xFF000000),
|
||||||
|
onSecondary = Color(0xFFFFFFFF),
|
||||||
|
secondaryContainer = Color(0xFFDDDDDD),
|
||||||
|
onSecondaryContainer = Color(0xFF0C0C0C),
|
||||||
|
tertiary = Color(0xFFFFFFFF),
|
||||||
|
onTertiary = Color(0xFF000000),
|
||||||
|
tertiaryContainer = Color(0xFFD8E2FF),
|
||||||
|
onTertiaryContainer = Color(0xFF001947),
|
||||||
|
background = Color(0xFFFDFDFD),
|
||||||
|
onBackground = Color(0xFF222222),
|
||||||
|
surface = Color(0xFFFDFDFD),
|
||||||
|
onSurface = Color(0xFF222222),
|
||||||
|
surfaceVariant = Color(0xFFEDEDED),
|
||||||
|
onSurfaceVariant = Color(0xFF515151),
|
||||||
|
surfaceTint = Color(0xFF000000),
|
||||||
|
inverseSurface = Color(0xFF333333),
|
||||||
|
inverseOnSurface = Color(0xFFF4F4F4),
|
||||||
|
outline = Color(0xFF838383),
|
||||||
|
)
|
||||||
|
}
|
@ -0,0 +1,71 @@
|
|||||||
|
package eu.kanade.presentation.theme.colorscheme
|
||||||
|
|
||||||
|
import androidx.compose.material3.darkColorScheme
|
||||||
|
import androidx.compose.material3.lightColorScheme
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Colors for Yotsuba theme
|
||||||
|
* Original color scheme by ztimms73
|
||||||
|
* M3 colors generated by Material Theme Builder (https://goo.gle/material-theme-builder-web)
|
||||||
|
*
|
||||||
|
* Key colors:
|
||||||
|
* Primary 0xFFAE3200
|
||||||
|
* Secondary 0xFFAE3200
|
||||||
|
* Tertiary 0xFF6B5E2F
|
||||||
|
* Neutral 0xFF655C5A
|
||||||
|
*/
|
||||||
|
internal object YotsubaColorScheme : BaseColorScheme() {
|
||||||
|
|
||||||
|
override val darkScheme = darkColorScheme(
|
||||||
|
primary = Color(0xFFFFB59D),
|
||||||
|
onPrimary = Color(0xFF5F1600),
|
||||||
|
primaryContainer = Color(0xFF862200),
|
||||||
|
onPrimaryContainer = Color(0xFFFFDBCF),
|
||||||
|
inversePrimary = Color(0xFFAE3200),
|
||||||
|
secondary = Color(0xFFFFB59D),
|
||||||
|
onSecondary = Color(0xFF5F1600),
|
||||||
|
secondaryContainer = Color(0xFF862200),
|
||||||
|
onSecondaryContainer = Color(0xFFFFDBCF),
|
||||||
|
tertiary = Color(0xFFD7C68D),
|
||||||
|
onTertiary = Color(0xFF3A2F05),
|
||||||
|
tertiaryContainer = Color(0xFF524619),
|
||||||
|
onTertiaryContainer = Color(0xFFF5E2A7),
|
||||||
|
background = Color(0xFF211A18),
|
||||||
|
onBackground = Color(0xFFEDE0DD),
|
||||||
|
surface = Color(0xFF211A18),
|
||||||
|
onSurface = Color(0xFFEDE0DD),
|
||||||
|
surfaceVariant = Color(0xFF53433F),
|
||||||
|
onSurfaceVariant = Color(0xFFD8C2BC),
|
||||||
|
surfaceTint = Color(0xFFFFB59D),
|
||||||
|
inverseSurface = Color(0xFFEDE0DD),
|
||||||
|
inverseOnSurface = Color(0xFF211A18),
|
||||||
|
outline = Color(0xFFA08C87),
|
||||||
|
)
|
||||||
|
|
||||||
|
override val lightScheme = lightColorScheme(
|
||||||
|
primary = Color(0xFFAE3200),
|
||||||
|
onPrimary = Color(0xFFFFFFFF),
|
||||||
|
primaryContainer = Color(0xFFFFDBCF),
|
||||||
|
onPrimaryContainer = Color(0xFF3B0A00),
|
||||||
|
inversePrimary = Color(0xFFFFB59D),
|
||||||
|
secondary = Color(0xFFAE3200),
|
||||||
|
onSecondary = Color(0xFFFFFFFF),
|
||||||
|
secondaryContainer = Color(0xFFFFDBCF),
|
||||||
|
onSecondaryContainer = Color(0xFF3B0A00),
|
||||||
|
tertiary = Color(0xFF6B5E2F),
|
||||||
|
onTertiary = Color(0xFFFFFFFF),
|
||||||
|
tertiaryContainer = Color(0xFFF5E2A7),
|
||||||
|
onTertiaryContainer = Color(0xFF231B00),
|
||||||
|
background = Color(0xFFFCFCFC),
|
||||||
|
onBackground = Color(0xFF211A18),
|
||||||
|
surface = Color(0xFFFCFCFC),
|
||||||
|
onSurface = Color(0xFF211A18),
|
||||||
|
surfaceVariant = Color(0xFFF5DED8),
|
||||||
|
onSurfaceVariant = Color(0xFF53433F),
|
||||||
|
surfaceTint = Color(0xFFAE3200),
|
||||||
|
inverseSurface = Color(0xFF362F2D),
|
||||||
|
inverseOnSurface = Color(0xFFFBEEEB),
|
||||||
|
outline = Color(0xFF85736E),
|
||||||
|
)
|
||||||
|
}
|
@ -23,7 +23,6 @@ glance = "androidx.glance:glance-appwidget:1.0.0"
|
|||||||
|
|
||||||
accompanist-webview = { module = "com.google.accompanist:accompanist-webview", version.ref = "accompanist" }
|
accompanist-webview = { module = "com.google.accompanist:accompanist-webview", version.ref = "accompanist" }
|
||||||
accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" }
|
accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" }
|
||||||
accompanist-themeadapter = { module = "com.google.accompanist:accompanist-themeadapter-material3", version.ref = "accompanist" }
|
|
||||||
accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanist" }
|
accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanist" }
|
||||||
|
|
||||||
lintchecks = { module = "com.slack.lint.compose:compose-lint-checks", version = "1.2.0" }
|
lintchecks = { module = "com.slack.lint.compose:compose-lint-checks", version = "1.2.0" }
|
Loading…
Reference in New Issue
Block a user