Skip to content

Instantly share code, notes, and snippets.

@llama-0
Created August 17, 2021 09:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save llama-0/9b92e8eed30fe65bbdc3b47bf57a1a49 to your computer and use it in GitHub Desktop.
Save llama-0/9b92e8eed30fe65bbdc3b47bf57a1a49 to your computer and use it in GitHub Desktop.
package ru.llama.core.presentation.theme
import androidx.compose.material.Colors
import androidx.compose.material.darkColors
import androidx.compose.material.lightColors
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable
import androidx.compose.ui.graphics.Color
@Stable
@Suppress("unused")
data class AppColors(
val separator: Color,
val hint: Color,
val disabled: Color,
val purple: Color,
val materialColors: Colors,
) {
val primary: Color = materialColors.primary
val primaryVariant: Color = materialColors.primaryVariant
val secondary: Color = materialColors.secondary
val secondaryVariant: Color = materialColors.secondaryVariant
val background: Color = materialColors.background
val surface: Color = materialColors.surface
val error: Color = materialColors.error
val onPrimary: Color = materialColors.onPrimary
val onSecondary: Color = materialColors.onSecondary
val onBackground: Color = materialColors.onBackground
val onSurface: Color = materialColors.onSurface
val onError: Color = materialColors.onError
val isLight: Boolean = materialColors.isLight
}
@Composable
fun appColors(darkTheme: Boolean): AppColors =
if (darkTheme) darkAppColors else lightAppColors
fun defaultAppColors() = lightAppColors
private val darkAppColors = AppColors(
separator = AppCustomColors.GraySecondary,
hint = AppCustomColors.GrayPrimary,
disabled = Color.LightGray,
purple = AppCustomColors.BlueSecondary,
materialColors = darkColors(
primary = Color.Black500,
primaryVariant = AppCustomColors.GreenPrimary,
secondary = AppCustomColors.GreenPrimary,
secondaryVariant = Color.Black,
background = Color.Black,
surface = Color.Black500,
onPrimary = Color.White,
onSecondary = Color.White,
onBackground = Color.White,
onSurface = Color.White,
error = AppCustomColors.Orange,
onError = Color.Black,
)
)
private val lightAppColors = AppColors(
separator = AppCustomColors.GraySecondary,
hint = AppCustomColors.GrayPrimary,
disabled = Color.LightGray,
purple = AppCustomColors.BlueSecondary,
materialColors = lightColors(
primary = Color.White,
primaryVariant = AppCustomColors.GreenPrimary,
secondary = AppCustomColors.GreenPrimary,
secondaryVariant = Color.White,
background = AppCustomColors.Gray100,
surface = Color.White,
onPrimary = Color.Black,
onSecondary = Color.Black,
onBackground = Color.White,
onSurface = Color.Black,
error = AppCustomColors.Orange,
onError = Color.White,
)
)
private object AppCustomColors {
val GreenPrimary: Color = Color(0xFF51AB7C)
val Orange: Color = Color(0xFFFB2612)
val GrayPrimary: Color = Color(0xFFA9BCA5)
val BlueSecondary: Color = Color(0xFF9685E3)
val GraySecondary: Color = Color(0xFFEDFCBC)
val Gray100: Color = Color(0xFFF8E2F9)
}
/*
* Generally colors should be used from the app theme,
* so one should avoid using colors below but include them in app theme
* when necessary.
* */
@Stable
val Color.Companion.GreenPrimary: Color
get() = Color(0xFF51AB7C)
val Color.Companion.GreenShadow: Color
get() = Color(0x4D26C910)
val Color.Companion.GreyBackgroundShadow: Color
get() = Color(0x1B000000)
val Color.Companion.Orange: Color
get() = Color(0xFFFB2612)
val Color.Companion.GrayPrimary: Color
get() = Color(0xFFA9BCA5)
val Color.Companion.BlueSecondary: Color
get() = Color(0xFF9685E3)
val Color.Companion.GraySecondary: Color
get() = Color(0xFFEDFCBC)
val Color.Companion.Gray200: Color
get() = Color(0xFFF1E9F8)
val Color.Companion.Black87: Color
get() = Color(0xDB000000)
val Color.Companion.Black500: Color
get() = Color(0xFF1D5C3F)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment