Gitnuro/src/main/kotlin/app/theme/Theme.kt
Abdelilah El Aissaoui 5659bf8918 Added basic split diff
2022-08-14 20:25:51 +02:00

117 lines
2.5 KiB
Kotlin

@file:Suppress("unused")
package app.theme
import androidx.compose.material.Colors
import androidx.compose.material.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
import app.ui.dropdowns.DropDownOption
private val defaultAppTheme: ColorsScheme = darkBlueTheme
private var appTheme: ColorsScheme = defaultAppTheme
@Composable
fun AppTheme(
selectedTheme: Theme = Theme.DARK,
customTheme: ColorsScheme?,
content: @Composable() () -> Unit
) {
val theme = when (selectedTheme) {
Theme.LIGHT -> lightTheme
Theme.DARK -> darkBlueTheme
Theme.DARK_GRAY -> darkGrayTheme
Theme.CUSTOM -> customTheme ?: defaultAppTheme
}
appTheme = theme
MaterialTheme(
colors = theme.toComposeColors(),
content = content,
typography = typography(),
)
}
@get:Composable
val Colors.backgroundSelected: Color
get() = appTheme.backgroundSelected
@get:Composable
val Colors.primaryTextColor: Color
get() = appTheme.primaryText
@get:Composable
val Colors.secondaryTextColor: Color
get() = appTheme.secondaryText
@get:Composable
val Colors.borderColor: Color
get() = appTheme.borderColor
@get:Composable
val Colors.headerBackground: Color
get() = appTheme.headerBackground
@get:Composable
val Colors.graphHeaderBackground: Color
get() = appTheme.graphHeaderBackground
@get:Composable
val Colors.addFile: Color
get() = appTheme.addFile
@get:Composable
val Colors.deleteFile: Color
get() = appTheme.deletedFile
@get:Composable
val Colors.modifyFile: Color
get() = appTheme.modifiedFile
@get:Composable
val Colors.conflictFile: Color
get() = appTheme.conflictingFile
@get:Composable
val Colors.headerText: Color
get() = appTheme.onHeader
val Colors.abortButton: Color
get() = appTheme.error
val Colors.scrollbarNormal: Color
get() = appTheme.normalScrollbar
val Colors.scrollbarHover: Color
get() = appTheme.hoverScrollbar
val Colors.secondarySurface: Color
get() = appTheme.secondarySurface
val Colors.dialogOverlay: Color
get() = appTheme.dialogOverlay
val Colors.diffLineAdded: Color
get() = appTheme.diffLineAdded
val Colors.diffLineRemoved: Color
get() = appTheme.diffLineRemoved
enum class Theme(val displayName: String) : DropDownOption {
LIGHT("Light"),
DARK("Dark"),
DARK_GRAY("Dark gray"),
CUSTOM("Custom");
override val optionName: String
get() = displayName
}
val themeLists = listOf(
Theme.LIGHT,
Theme.DARK,
Theme.DARK_GRAY,
Theme.CUSTOM,
)