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

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