From 19890ef4d418818247d22c0b3683a4452bcdee21 Mon Sep 17 00:00:00 2001 From: "Tran M. Cuong" Date: Tue, 2 Jul 2024 01:14:27 +0700 Subject: [PATCH] update-color-schemes (#121) * feat: Add more color theme - CloudFlare - CottonCandy - Doom - Matrix - Mocha - Sapphire * generate full color for Cottoncandy * generate full color for Mocha * refactor(ui): reorder themes close #114 --- .../eu/kanade/domain/ui/model/AppTheme.kt | 12 + .../presentation/theme/TachiyomiTheme.kt | 12 + .../colorscheme/CloudflareColorScheme.kt | 71 ++++++ .../colorscheme/CottoncandyColorScheme.kt | 93 ++++++++ .../theme/colorscheme/DoomColorScheme.kt | 71 ++++++ .../theme/colorscheme/MatrixColorScheme.kt | 71 ++++++ .../theme/colorscheme/MochaColorScheme.kt | 95 ++++++++ .../theme/colorscheme/SapphireColorScheme.kt | 71 ++++++ .../ui/base/delegate/ThemingDelegate.kt | 6 + app/src/main/res/values/themes.xml | 210 ++++++++++++++++++ .../commonMain/resources/MR/ar/strings.xml | 6 + .../commonMain/resources/MR/base/strings.xml | 6 + .../commonMain/resources/MR/ca/strings.xml | 9 + .../commonMain/resources/MR/de/strings.xml | 6 + .../commonMain/resources/MR/es/strings.xml | 6 + .../commonMain/resources/MR/fil/strings.xml | 9 + .../commonMain/resources/MR/fr/strings.xml | 6 + .../commonMain/resources/MR/hr/strings.xml | 9 + .../commonMain/resources/MR/in/strings.xml | 9 + .../commonMain/resources/MR/it/strings.xml | 6 + .../commonMain/resources/MR/ko/strings.xml | 9 + .../resources/MR/pt-rBR/strings.xml | 6 + .../commonMain/resources/MR/pt/strings.xml | 6 + .../commonMain/resources/MR/ru/strings.xml | 6 + .../commonMain/resources/MR/tr/strings.xml | 9 + .../commonMain/resources/MR/uk/strings.xml | 2 + .../resources/MR/zh-rCN/strings.xml | 6 + .../resources/MR/zh-rTW/strings.xml | 6 + .../res/values-night/colors_cloudflare.xml | 37 +++ .../res/values-night/colors_cottoncandy.xml | 145 ++++++++++++ .../src/main/res/values-night/colors_doom.xml | 36 +++ .../main/res/values-night/colors_matrix.xml | 36 +++ .../main/res/values-night/colors_mocha.xml | 145 ++++++++++++ .../main/res/values-night/colors_sapphire.xml | 36 +++ .../src/main/res/values/colors_cloudflare.xml | 36 +++ .../main/res/values/colors_cottoncandy.xml | 145 ++++++++++++ .../src/main/res/values/colors_doom.xml | 36 +++ .../src/main/res/values/colors_matrix.xml | 37 +++ .../src/main/res/values/colors_mocha.xml | 145 ++++++++++++ .../src/main/res/values/colors_sapphire.xml | 36 +++ 40 files changed, 1704 insertions(+) create mode 100644 app/src/main/java/eu/kanade/presentation/theme/colorscheme/CloudflareColorScheme.kt create mode 100644 app/src/main/java/eu/kanade/presentation/theme/colorscheme/CottoncandyColorScheme.kt create mode 100644 app/src/main/java/eu/kanade/presentation/theme/colorscheme/DoomColorScheme.kt create mode 100644 app/src/main/java/eu/kanade/presentation/theme/colorscheme/MatrixColorScheme.kt create mode 100644 app/src/main/java/eu/kanade/presentation/theme/colorscheme/MochaColorScheme.kt create mode 100644 app/src/main/java/eu/kanade/presentation/theme/colorscheme/SapphireColorScheme.kt create mode 100644 i18n-kmk/src/commonMain/resources/MR/ca/strings.xml create mode 100644 i18n-kmk/src/commonMain/resources/MR/fil/strings.xml create mode 100644 i18n-kmk/src/commonMain/resources/MR/hr/strings.xml create mode 100644 i18n-kmk/src/commonMain/resources/MR/in/strings.xml create mode 100644 i18n-kmk/src/commonMain/resources/MR/ko/strings.xml create mode 100644 i18n-kmk/src/commonMain/resources/MR/tr/strings.xml create mode 100644 presentation-core/src/main/res/values-night/colors_cloudflare.xml create mode 100644 presentation-core/src/main/res/values-night/colors_cottoncandy.xml create mode 100644 presentation-core/src/main/res/values-night/colors_doom.xml create mode 100644 presentation-core/src/main/res/values-night/colors_matrix.xml create mode 100644 presentation-core/src/main/res/values-night/colors_mocha.xml create mode 100644 presentation-core/src/main/res/values-night/colors_sapphire.xml create mode 100644 presentation-core/src/main/res/values/colors_cloudflare.xml create mode 100644 presentation-core/src/main/res/values/colors_cottoncandy.xml create mode 100644 presentation-core/src/main/res/values/colors_doom.xml create mode 100644 presentation-core/src/main/res/values/colors_matrix.xml create mode 100644 presentation-core/src/main/res/values/colors_mocha.xml create mode 100644 presentation-core/src/main/res/values/colors_sapphire.xml diff --git a/app/src/main/java/eu/kanade/domain/ui/model/AppTheme.kt b/app/src/main/java/eu/kanade/domain/ui/model/AppTheme.kt index 468e9b09a..87e76ef03 100644 --- a/app/src/main/java/eu/kanade/domain/ui/model/AppTheme.kt +++ b/app/src/main/java/eu/kanade/domain/ui/model/AppTheme.kt @@ -4,10 +4,16 @@ import dev.icerock.moko.resources.StringResource import eu.kanade.tachiyomi.util.system.isDevFlavor import eu.kanade.tachiyomi.util.system.isPreviewBuildType import tachiyomi.i18n.MR +import tachiyomi.i18n.kmk.KMR enum class AppTheme(val titleRes: StringResource?) { DEFAULT(MR.strings.label_default), MONET(MR.strings.theme_monet), + + // Aniyomi themes + COTTONCANDY(KMR.strings.theme_cottoncandy), + MOCHA(KMR.strings.theme_mocha), + GREEN_APPLE(MR.strings.theme_greenapple), LAVENDER(MR.strings.theme_lavender), MIDNIGHT_DUSK(MR.strings.theme_midnightdusk), @@ -21,6 +27,12 @@ enum class AppTheme(val titleRes: StringResource?) { YINYANG(MR.strings.theme_yinyang), YOTSUBA(MR.strings.theme_yotsuba), + // Aniyomi themes + CLOUDFLARE(KMR.strings.theme_cloudflare), + DOOM(KMR.strings.theme_doom), + MATRIX(KMR.strings.theme_matrix), + SAPPHIRE(KMR.strings.theme_sapphire), + // Deprecated DARK_BLUE(null), HOT_PINK(null), diff --git a/app/src/main/java/eu/kanade/presentation/theme/TachiyomiTheme.kt b/app/src/main/java/eu/kanade/presentation/theme/TachiyomiTheme.kt index 331f4b32f..a57495679 100644 --- a/app/src/main/java/eu/kanade/presentation/theme/TachiyomiTheme.kt +++ b/app/src/main/java/eu/kanade/presentation/theme/TachiyomiTheme.kt @@ -11,11 +11,17 @@ import com.materialkolor.DynamicMaterialTheme import eu.kanade.domain.ui.UiPreferences import eu.kanade.domain.ui.model.AppTheme import eu.kanade.presentation.theme.colorscheme.BaseColorScheme +import eu.kanade.presentation.theme.colorscheme.CloudflareColorScheme +import eu.kanade.presentation.theme.colorscheme.CottoncandyColorScheme +import eu.kanade.presentation.theme.colorscheme.DoomColorScheme import eu.kanade.presentation.theme.colorscheme.GreenAppleColorScheme import eu.kanade.presentation.theme.colorscheme.LavenderColorScheme +import eu.kanade.presentation.theme.colorscheme.MatrixColorScheme import eu.kanade.presentation.theme.colorscheme.MidnightDuskColorScheme +import eu.kanade.presentation.theme.colorscheme.MochaColorScheme import eu.kanade.presentation.theme.colorscheme.MonetColorScheme import eu.kanade.presentation.theme.colorscheme.NordColorScheme +import eu.kanade.presentation.theme.colorscheme.SapphireColorScheme import eu.kanade.presentation.theme.colorscheme.StrawberryColorScheme import eu.kanade.presentation.theme.colorscheme.TachiyomiColorScheme import eu.kanade.presentation.theme.colorscheme.TakoColorScheme @@ -119,4 +125,10 @@ private val colorSchemes: Map = mapOf( AppTheme.TIDAL_WAVE to TidalWaveColorScheme, AppTheme.YINYANG to YinYangColorScheme, AppTheme.YOTSUBA to YotsubaColorScheme, + AppTheme.CLOUDFLARE to CloudflareColorScheme, + AppTheme.COTTONCANDY to CottoncandyColorScheme, + AppTheme.DOOM to DoomColorScheme, + AppTheme.MATRIX to MatrixColorScheme, + AppTheme.MOCHA to MochaColorScheme, + AppTheme.SAPPHIRE to SapphireColorScheme, ) diff --git a/app/src/main/java/eu/kanade/presentation/theme/colorscheme/CloudflareColorScheme.kt b/app/src/main/java/eu/kanade/presentation/theme/colorscheme/CloudflareColorScheme.kt new file mode 100644 index 000000000..10cabfeeb --- /dev/null +++ b/app/src/main/java/eu/kanade/presentation/theme/colorscheme/CloudflareColorScheme.kt @@ -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 Clouflare theme + * Original color scheme by LuftVerbot + * M3 colors generated by Material Theme Builder (https://goo.gle/material-theme-builder-web) + * + * Key colors: + * Primary 0xFFF38020 + * Secondary 0xFFF38020 + * Tertiary 0xFF1B1B22 + * Neutral 0xFF655C5A + */ +internal object CloudflareColorScheme : BaseColorScheme() { + + override val darkScheme = darkColorScheme( + primary = Color(0xFFF38020), + onPrimary = Color(0xFF1B1B22), + primaryContainer = Color(0xFFF38020), + onPrimaryContainer = Color(0xFF1B1B22), + inversePrimary = Color(0xFFD6BAFF), // Assuming 'inversePrimary' maps to 'cloudflare_primaryInverse' + secondary = Color(0xFFF38020), + onSecondary = Color(0xFF1B1B22), + secondaryContainer = Color(0xFFF38020), + onSecondaryContainer = Color(0xFF1B1B22), + tertiary = Color(0xFF1B1B22), + onTertiary = Color(0xFFF38020), + tertiaryContainer = Color(0xFF1B1B22), + onTertiaryContainer = Color(0xFFF38020), + background = Color(0xFF1B1B22), + onBackground = Color(0xFFEFF2F5), + surface = Color(0xFF1B1B22), + onSurface = Color(0xFFEFF2F5), + surfaceVariant = Color(0xFF3F3F46), + onSurfaceVariant = Color(0xFFD8FFFFFF), + surfaceTint = Color(0xFFF38020), // Assuming 'surfaceTint' maps to 'cloudflare_primary' or similar + inverseSurface = Color(0xFFF3EFF4), + inverseOnSurface = Color(0xFF313033), + outline = Color(0xFFF38020), + ) + + override val lightScheme = lightColorScheme( + primary = Color(0xFFF38020), + onPrimary = Color(0xFFEFF2F5), + primaryContainer = Color(0xFFF38020), + onPrimaryContainer = Color(0xFFEFF2F5), + inversePrimary = Color(0xFFD6BAFF), // Assuming 'inversePrimary' maps to 'cloudflare_primaryInverse' + secondary = Color(0xFFF38020), + onSecondary = Color(0xFFEFF2F5), + secondaryContainer = Color(0xFFF38020), + onSecondaryContainer = Color(0xFFEFF2F5), + tertiary = Color(0xFFEFF2F5), + onTertiary = Color(0xFFF38020), + tertiaryContainer = Color(0xFFEFF2F5), + onTertiaryContainer = Color(0xFFF38020), + background = Color(0xFFEFF2F5), + onBackground = Color(0xFF1B1B22), + surface = Color(0xFFEFF2F5), + onSurface = Color(0xFF1B1B22), + surfaceVariant = Color(0xFFB9B0CC), + onSurfaceVariant = Color(0xFFD849454E), + surfaceTint = Color(0xFFF38020), // Assuming 'surfaceTint' maps to 'cloudflare_primary' or similar + inverseSurface = Color(0xFF313033), + inverseOnSurface = Color(0xFFF3EFF4), + outline = Color(0xFFF38020), + ) +} diff --git a/app/src/main/java/eu/kanade/presentation/theme/colorscheme/CottoncandyColorScheme.kt b/app/src/main/java/eu/kanade/presentation/theme/colorscheme/CottoncandyColorScheme.kt new file mode 100644 index 000000000..c627374d1 --- /dev/null +++ b/app/src/main/java/eu/kanade/presentation/theme/colorscheme/CottoncandyColorScheme.kt @@ -0,0 +1,93 @@ +package eu.kanade.presentation.theme.colorscheme + +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.ui.graphics.Color + +/** + * Colors for Cottoncandy theme + * M3 colors generated by Material Theme Builder (https://goo.gle/material-theme-builder-web) + * + * Key colors: + * Primary 0xFFFFCBCB + * Secondary 0xFFC9DFF6 + * Tertiary 0xFFFDDFFD + */ +internal object CottoncandyColorScheme : BaseColorScheme() { + + override val darkScheme = darkColorScheme( + primary = Color(0xFFFFB3B4), + onPrimary = Color(0xFF561D21), + primaryContainer = Color(0xFF733336), + onPrimaryContainer = Color(0xFFFFDAD9), + secondary = Color(0xFF80D4D8), // Unread badge + onSecondary = Color(0xFF003739), // Unread badge text + secondaryContainer = Color(0xFF004F52), // Navigation bar selector pill & progress indicator (remaining) + onSecondaryContainer = Color(0xFF9CF1F4), // Navigation bar selector icon + tertiary = Color(0xFFEBB5ED), // Downloaded badge + onTertiary = Color(0xFF48204E), // Downloaded badge text + tertiaryContainer = Color(0xFF613766), + onTertiaryContainer = Color(0xFFFFD6FE), + error = Color(0xFFFFB4AB), + onError = Color(0xFF690005), + errorContainer = Color(0xFF93000A), + onErrorContainer = Color(0xFFFFDAD6), + background = Color(0xFF1A1111), + onBackground = Color(0xFFF0DEDE), + surface = Color(0xFF1A1112), + onSurface = Color(0xFFF0DEDF), + surfaceVariant = Color(0xFF524343), // Navigation bar background (ThemePrefWidget) + onSurfaceVariant = Color(0xFFD7C1C1), + outline = Color(0xFFA08C8C), + outlineVariant = Color(0xFF524343), + scrim = Color(0xFF000000), + inverseSurface = Color(0xFFF0DEDF), + inverseOnSurface = Color(0xFF382E2F), + inversePrimary = Color(0xFF8F4A4C), + surfaceDim = Color(0xFF1A1112), + surfaceBright = Color(0xFF413738), + surfaceContainerLowest = Color(0xFF140C0D), + surfaceContainerLow = Color(0xFF22191A), + surfaceContainer = Color(0xFF261D1E), // Navigation bar background + surfaceContainerHigh = Color(0xFF312828), + surfaceContainerHighest = Color(0xFF3D3233), + ) + + override val lightScheme = lightColorScheme( + primary = Color(0xFF8F4A4C), + onPrimary = Color(0xFFFFFFFF), + primaryContainer = Color(0xFFFFDAD9), + onPrimaryContainer = Color(0xFF3B080E), + secondary = Color(0xFF00696D), // Unread badge + onSecondary = Color(0xFFFFFFFF), // Unread badge text + secondaryContainer = Color(0xFF9CF1F4), // Navigation bar selector pill & progress indicator (remaining) + onSecondaryContainer = Color(0xFF002021), // Navigation bar selector icon + tertiary = Color(0xFF7B4E7F), // Downloaded badge + onTertiary = Color(0xFFFFFFFF), // Downloaded badge text + tertiaryContainer = Color(0xFFFFD6FE), + onTertiaryContainer = Color(0xFF310938), + error = Color(0xFFBA1A1A), + onError = Color(0xFFFFFFFF), + errorContainer = Color(0xFFFFDAD6), + onErrorContainer = Color(0xFF410002), + background = Color(0xFFFFF8F7), + onBackground = Color(0xFF221919), + surface = Color(0xFFFFF8F7), + onSurface = Color(0xFF22191A), + surfaceVariant = Color(0xFFF4DDDD), // Navigation bar background (ThemePrefWidget) + onSurfaceVariant = Color(0xFF524343), + outline = Color(0xFF857373), + outlineVariant = Color(0xFFD7C1C1), + scrim = Color(0xFF000000), + inverseSurface = Color(0xFF382E2F), + inverseOnSurface = Color(0xFFFEEDED), + inversePrimary = Color(0xFFFFB3B4), + surfaceDim = Color(0xFFE7D6D7), + surfaceBright = Color(0xFFFFF8F7), + surfaceContainerLowest = Color(0xFFFFFFFF), + surfaceContainerLow = Color(0xFFFFF0F1), + surfaceContainer = Color(0xFFFBEAEB), // Navigation bar background + surfaceContainerHigh = Color(0xFFF6E4E5), + surfaceContainerHighest = Color(0xFFF0DEDF), + ) +} diff --git a/app/src/main/java/eu/kanade/presentation/theme/colorscheme/DoomColorScheme.kt b/app/src/main/java/eu/kanade/presentation/theme/colorscheme/DoomColorScheme.kt new file mode 100644 index 000000000..ccdded3a7 --- /dev/null +++ b/app/src/main/java/eu/kanade/presentation/theme/colorscheme/DoomColorScheme.kt @@ -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 Doom theme + * Original color scheme by LuftVerbot + * M3 colors generated by Material Theme Builder (https://goo.gle/material-theme-builder-web) + * + * Key colors: + * Primary 0xFFF38020 + * Secondary 0xFFF38020 + * Tertiary 0xFF1B1B22 + * Neutral 0xFF655C5A + */ +internal object DoomColorScheme : BaseColorScheme() { + + override val darkScheme = darkColorScheme( + primary = Color(0xFFFF0000), + onPrimary = Color(0xFFFAFAFA), + primaryContainer = Color(0xFFFF0000), + onPrimaryContainer = Color(0xFFFAFAFA), + secondary = Color(0xFFFF0000), + onSecondary = Color(0xFFFAFAFA), + secondaryContainer = Color(0xFFFF0000), + onSecondaryContainer = Color(0xFFFAFAFA), + tertiary = Color(0xFFBFBFBF), + onTertiary = Color(0xFFFF0000), + tertiaryContainer = Color(0xFFBFBFBF), + onTertiaryContainer = Color(0xFFFF0000), + background = Color(0xFF1B1B1B), + onBackground = Color(0xFFFFFFFF), + surface = Color(0xFF1B1B1B), + onSurface = Color(0xFFFFFFFF), + surfaceVariant = Color(0xFF303030), + onSurfaceVariant = Color(0xFFD8FFFFFF), + surfaceTint = Color(0xFFFF0000), + inverseSurface = Color(0xFFFAFAFA), + inverseOnSurface = Color(0xFF313131), + outline = Color(0xFFFF0000), + inversePrimary = Color(0xFF6D0D0B), + ) + + override val lightScheme = lightColorScheme( + primary = Color(0xFFFF0000), + onPrimary = Color(0xFFFFFFFF), + primaryContainer = Color(0xFFFF0000), + onPrimaryContainer = Color(0xFFFFFFFF), + inversePrimary = Color(0xFF6D0D0B), // Assuming 'inversePrimary' maps to 'doom_primaryInverse' + secondary = Color(0xFFFF0000), + onSecondary = Color(0xFFFFFFFF), + secondaryContainer = Color(0xFFFF0000), + onSecondaryContainer = Color(0xFFFFFFFF), + tertiary = Color(0xFFBFBFBF), + onTertiary = Color(0xFFFF0000), + tertiaryContainer = Color(0xFFBFBFBF), + onTertiaryContainer = Color(0xFFFF0000), + background = Color(0xFF212121), + onBackground = Color(0xFFFFFFFF), + surface = Color(0xFF212121), + onSurface = Color(0xFFFFFFFF), + surfaceVariant = Color(0xFF4D4D4D), + onSurfaceVariant = Color(0xFFD849454E), + surfaceTint = Color(0xFFFF0000), // Assuming 'surfaceTint' maps to 'doom_primary' or similar + inverseSurface = Color(0xFF424242), + inverseOnSurface = Color(0xFFFAFAFA), + outline = Color(0xFFFF0000), + ) +} diff --git a/app/src/main/java/eu/kanade/presentation/theme/colorscheme/MatrixColorScheme.kt b/app/src/main/java/eu/kanade/presentation/theme/colorscheme/MatrixColorScheme.kt new file mode 100644 index 000000000..c59a601fb --- /dev/null +++ b/app/src/main/java/eu/kanade/presentation/theme/colorscheme/MatrixColorScheme.kt @@ -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 Matrix theme + * Original color scheme by LuftVerbot + * M3 colors generated by Material Theme Builder (https://goo.gle/material-theme-builder-web) + * + * Key colors: + * Primary 0xFFF38020 + * Secondary 0xFFF38020 + * Tertiary 0xFF1B1B22 + * Neutral 0xFF655C5A + */ +internal object MatrixColorScheme : BaseColorScheme() { + + override val darkScheme = darkColorScheme( + primary = Color(0xFF00FF00), + onPrimary = Color(0xFFFAFAFA), + primaryContainer = Color(0xFF00FF00), + onPrimaryContainer = Color(0xFFFAFAFA), + secondary = Color(0xFF00FF00), + onSecondary = Color(0xFFFAFAFA), + secondaryContainer = Color(0xFF00FF00), + onSecondaryContainer = Color(0xFFFAFAFA), + tertiary = Color(0xFFFFFFFF), + onTertiary = Color(0xFF00FF00), + tertiaryContainer = Color(0xFFFFFFFF), + onTertiaryContainer = Color(0xFF00FF00), + background = Color(0xFF111111), + onBackground = Color(0xFFFFFFFF), + surface = Color(0xFF111111), + onSurface = Color(0xFFFFFFFF), + surfaceVariant = Color(0xFF212121), + onSurfaceVariant = Color(0xFFD8FFFFFF), + surfaceTint = Color(0xFF00FF00), + inverseSurface = Color(0xFFFAFAFA), + inverseOnSurface = Color(0xFF313131), + outline = Color(0xFF00FF00), + inversePrimary = Color(0xFF007700), + ) + + override val lightScheme = lightColorScheme( + primary = Color(0xFF00FF00), + onPrimary = Color(0xFF000000), + primaryContainer = Color(0xFF00FF00), + onPrimaryContainer = Color(0xFF000000), + secondary = Color(0xFF00FF00), + onSecondary = Color(0xFF000000), + secondaryContainer = Color(0xFF00FF00), + onSecondaryContainer = Color(0xFF000000), + tertiary = Color(0xFF000000), + onTertiary = Color(0xFF00FF00), + tertiaryContainer = Color(0xFF000000), + onTertiaryContainer = Color(0xFF00FF00), + background = Color(0xFF000000), + onBackground = Color(0xFFFFFFFF), + surface = Color(0xFF000000), + onSurface = Color(0xFFFFFFFF), + surfaceVariant = Color(0xFF111111), + onSurfaceVariant = Color(0xFFD849454E), + surfaceTint = Color(0xFF00FF00), + inverseSurface = Color(0xFF424242), + inverseOnSurface = Color(0xFFFAFAFA), + outline = Color(0xFF00FF00), + inversePrimary = Color(0xFF007700), + ) +} diff --git a/app/src/main/java/eu/kanade/presentation/theme/colorscheme/MochaColorScheme.kt b/app/src/main/java/eu/kanade/presentation/theme/colorscheme/MochaColorScheme.kt new file mode 100644 index 000000000..97dfe7ecc --- /dev/null +++ b/app/src/main/java/eu/kanade/presentation/theme/colorscheme/MochaColorScheme.kt @@ -0,0 +1,95 @@ +package eu.kanade.presentation.theme.colorscheme + +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.ui.graphics.Color + +/** + * Colors for Mocha theme + * M3 colors generated by Material Theme Builder (https://goo.gle/material-theme-builder-web) + * + * Key colors: + * Primary 0xFFBF9270 + * Secondary 0xFFFFEDDB + * Tertiary 0xFFE8FCD1 + * Neutral 0xFF926441 + * Neutral Variant 0xFFEDCDBB + */ +internal object MochaColorScheme : BaseColorScheme() { + + override val darkScheme = darkColorScheme( + primary = Color(0xFFFFB77F), + onPrimary = Color(0xFF4E2600), + primaryContainer = Color(0xFF6C3A08), + onPrimaryContainer = Color(0xFFFFDCC3), + secondary = Color(0xFFF6BC70), // Unread badge + onSecondary = Color(0xFF462B00), // Unread badge text + secondaryContainer = Color(0xFF643F00), // Navigation bar selector pill & progress indicator (remaining) + onSecondaryContainer = Color(0xFFFFDDB6), // Navigation bar selector icon + tertiary = Color(0xFFAED18D), // Downloaded badge + onTertiary = Color(0xFF1C3704), // Downloaded badge text + tertiaryContainer = Color(0xFF314E19), + onTertiaryContainer = Color(0xFFC9EEA7), + error = Color(0xFFFFB4AB), + onError = Color(0xFF690005), + errorContainer = Color(0xFF93000A), + onErrorContainer = Color(0xFFFFDAD6), + background = Color(0xFF19120C), + onBackground = Color(0xFFEFDFD6), + surface = Color(0xFF19120D), + onSurface = Color(0xFFF0DFD6), + surfaceVariant = Color(0xFF52443C), // Navigation bar background (ThemePrefWidget) + onSurfaceVariant = Color(0xFFD7C3B8), + outline = Color(0xFF9F8D83), + outlineVariant = Color(0xFF52443C), + scrim = Color(0xFF000000), + inverseSurface = Color(0xFFF0DFD6), + inverseOnSurface = Color(0xFF382F28), + inversePrimary = Color(0xFF89511F), + surfaceDim = Color(0xFF19120D), + surfaceBright = Color(0xFF413731), + surfaceContainerLowest = Color(0xFF140D08), + surfaceContainerLow = Color(0xFF221A14), + surfaceContainer = Color(0xFF261E18), // Navigation bar background + surfaceContainerHigh = Color(0xFF312822), + surfaceContainerHighest = Color(0xFF3C332D), + ) + + override val lightScheme = lightColorScheme( + primary = Color(0xFF89511F), + onPrimary = Color(0xFFFFFFFF), + primaryContainer = Color(0xFFFFDCC3), + onPrimaryContainer = Color(0xFF2F1500), + secondary = Color(0xFF815511), // Unread badge + onSecondary = Color(0xFFFFFFFF), // Unread badge text + secondaryContainer = Color(0xFFFFDDB6), // Navigation bar selector pill & progress indicator (remaining) + onSecondaryContainer = Color(0xFF2A1800), // Navigation bar selector icon + tertiary = Color(0xFF48672E), // Downloaded badge + onTertiary = Color(0xFFFFFFFF), // Downloaded badge text + tertiaryContainer = Color(0xFFC9EEA7), + onTertiaryContainer = Color(0xFF0C2000), + error = Color(0xFFBA1A1A), + onError = Color(0xFFFFFFFF), + errorContainer = Color(0xFFFFDAD6), + onErrorContainer = Color(0xFF410002), + background = Color(0xFFFFF8F5), + onBackground = Color(0xFF221A14), + surface = Color(0xFFFFF8F5), + onSurface = Color(0xFF221A14), + surfaceVariant = Color(0xFFF4DED3), // Navigation bar background (ThemePrefWidget) + onSurfaceVariant = Color(0xFF52443C), + outline = Color(0xFF84746A), + outlineVariant = Color(0xFFD7C3B8), + scrim = Color(0xFF000000), + inverseSurface = Color(0xFF382F28), + inverseOnSurface = Color(0xFFFEEEE4), + inversePrimary = Color(0xFFFFB77F), + surfaceDim = Color(0xFFE7D7CE), + surfaceBright = Color(0xFFFFF8F5), + surfaceContainerLowest = Color(0xFFFFFFFF), + surfaceContainerLow = Color(0xFFFFF1E9), + surfaceContainer = Color(0xFFFBEBE1), // Navigation bar background + surfaceContainerHigh = Color(0xFFF5E5DC), + surfaceContainerHighest = Color(0xFFF0DFD6), + ) +} diff --git a/app/src/main/java/eu/kanade/presentation/theme/colorscheme/SapphireColorScheme.kt b/app/src/main/java/eu/kanade/presentation/theme/colorscheme/SapphireColorScheme.kt new file mode 100644 index 000000000..ba53c4b2c --- /dev/null +++ b/app/src/main/java/eu/kanade/presentation/theme/colorscheme/SapphireColorScheme.kt @@ -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 Sapphire theme + * Original color scheme by LuftVerbot + * M3 colors generated by Material Theme Builder (https://goo.gle/material-theme-builder-web) + * + * Key colors: + * Primary 0xFFF38020 + * Secondary 0xFFF38020 + * Tertiary 0xFF6B5E2F + * Neutral 0xFF655C5A + */ +internal object SapphireColorScheme : BaseColorScheme() { + + override val darkScheme = darkColorScheme( + primary = Color(0xFF1E88E5), + onPrimary = Color(0xFFFAFAFA), + primaryContainer = Color(0xFF1E88E5), + onPrimaryContainer = Color(0xFFFAFAFA), + inversePrimary = Color(0xFF2979FF), // Assuming 'inversePrimary' maps to 'sapphire_primaryInverse' + secondary = Color(0xFF1E88E5), + onSecondary = Color(0xFFFAFAFA), + secondaryContainer = Color(0xFF1E88E5), + onSecondaryContainer = Color(0xFFFAFAFA), + tertiary = Color(0xFF212121), + onTertiary = Color(0xFF1E88E5), + tertiaryContainer = Color(0xFF212121), + onTertiaryContainer = Color(0xFF1E88E5), + background = Color(0xFF212121), + onBackground = Color(0xFFFFFFFF), + surface = Color(0xFF212121), + onSurface = Color(0xFFFFFFFF), + surfaceVariant = Color(0xFF424242), + onSurfaceVariant = Color(0xFFD8FFFFFF), + surfaceTint = Color(0xFF1E88E5), // Assuming 'surfaceTint' maps to 'sapphire_primary' or similar + inverseSurface = Color(0xFFFAFAFA), + inverseOnSurface = Color(0xFF313131), + outline = Color(0xFF1E88E5), + ) + + override val lightScheme = lightColorScheme( + primary = Color(0xFF1E88E5), + onPrimary = Color(0xFFFFFFFF), + primaryContainer = Color(0xFF1E88E5), + onPrimaryContainer = Color(0xFFFFFFFF), + inversePrimary = Color(0xFF2979FF), // Assuming 'inversePrimary' maps to 'sapphire_primaryInverse' + secondary = Color(0xFF1E88E5), + onSecondary = Color(0xFFFFFFFF), + secondaryContainer = Color(0xFF1E88E5), + onSecondaryContainer = Color(0xFFFFFFFF), + tertiary = Color(0xFFE1F5FE), + onTertiary = Color(0xFF1E88E5), + tertiaryContainer = Color(0xFFE1F5FE), + onTertiaryContainer = Color(0xFF1E88E5), + background = Color(0xFFFFFFFF), + onBackground = Color(0xFF212121), + surface = Color(0xFFFFFFFF), + onSurface = Color(0xFF212121), + surfaceVariant = Color(0xFFB3E5FC), + onSurfaceVariant = Color(0xFFD849454E), + surfaceTint = Color(0xFF1E88E5), // Assuming 'surfaceTint' maps to 'sapphire_primary' or similar + inverseSurface = Color(0xFF424242), + inverseOnSurface = Color(0xFFFAFAFA), + outline = Color(0xFF1E88E5), + ) +} diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/delegate/ThemingDelegate.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/delegate/ThemingDelegate.kt index 8b3572f08..723161115 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/delegate/ThemingDelegate.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/delegate/ThemingDelegate.kt @@ -40,4 +40,10 @@ private val themeResources: Map = mapOf( AppTheme.YINYANG to R.style.Theme_Tachiyomi_YinYang, AppTheme.YOTSUBA to R.style.Theme_Tachiyomi_Yotsuba, AppTheme.TIDAL_WAVE to R.style.Theme_Tachiyomi_TidalWave, + AppTheme.COTTONCANDY to R.style.Theme_Tachiyomi_CottonCandy, + AppTheme.MOCHA to R.style.Theme_Tachiyomi_Mocha, + AppTheme.CLOUDFLARE to R.style.Theme_Tachiyomi_Cloudflare, + AppTheme.SAPPHIRE to R.style.Theme_Tachiyomi_Sapphire, + AppTheme.DOOM to R.style.Theme_Tachiyomi_Doom, + AppTheme.MATRIX to R.style.Theme_Tachiyomi_Matrix, ) diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 054e672b0..89ffcf538 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -89,6 +89,57 @@ + + + + + + + + + + + + + + + +