You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.3 KiB
76 lines
2.3 KiB
package org.jetbrains.codeviewer.ui.common |
|
|
|
import androidx.compose.material.Colors |
|
import androidx.compose.material.darkColors |
|
import androidx.compose.material.lightColors |
|
import androidx.compose.runtime.Composable |
|
import androidx.compose.runtime.Immutable |
|
import androidx.compose.runtime.staticCompositionLocalOf |
|
import androidx.compose.ui.graphics.Color |
|
import androidx.compose.ui.text.SpanStyle |
|
|
|
@Immutable |
|
data class Theme( |
|
val materialColors: Colors, |
|
val colors: ExtendedColors, |
|
val code: CodeStyle |
|
) { |
|
@Immutable |
|
class ExtendedColors( |
|
val codeGuide: Color |
|
) |
|
|
|
@Immutable |
|
data class CodeStyle( |
|
val simple: SpanStyle, |
|
val value: SpanStyle, |
|
val keyword: SpanStyle, |
|
val punctuation: SpanStyle, |
|
val annotation: SpanStyle, |
|
val comment: SpanStyle |
|
) |
|
|
|
companion object { |
|
val dark = Theme( |
|
materialColors = darkColors( |
|
background = Color(0xFF2B2B2B), |
|
surface = Color(0xFF3C3F41) |
|
), |
|
colors = ExtendedColors( |
|
codeGuide = Color(0xFF4E5254) |
|
), |
|
code = CodeStyle( |
|
simple = SpanStyle(Color(0xFFA9B7C6)), |
|
value = SpanStyle(Color(0xFF6897BB)), |
|
keyword = SpanStyle(Color(0xFFCC7832)), |
|
punctuation = SpanStyle(Color(0xFFA1C17E)), |
|
annotation = SpanStyle(Color(0xFFBBB529)), |
|
comment = SpanStyle(Color(0xFF808080)) |
|
) |
|
) |
|
|
|
val light = Theme( |
|
materialColors = lightColors( |
|
background = Color(0xFFF5F5F5), |
|
surface = Color(0xFFFFFFFF) |
|
), |
|
colors = ExtendedColors( |
|
codeGuide = Color(0xFF8E9294) |
|
), |
|
code = CodeStyle( |
|
simple = SpanStyle(Color(0xFF000000)), |
|
value = SpanStyle(Color(0xFF4A86E8)), |
|
keyword = SpanStyle(Color(0xFF000080)), |
|
punctuation = SpanStyle(Color(0xFFA1A1A1)), |
|
annotation = SpanStyle(Color(0xFFBBB529)), |
|
comment = SpanStyle(Color(0xFF808080)) |
|
) |
|
) |
|
} |
|
} |
|
|
|
val LocalTheme = staticCompositionLocalOf { Theme.dark } |
|
|
|
val AppTheme |
|
@Composable |
|
get() = LocalTheme.current
|
|
|