git.iko.soy/opencode-android
on e37d1bb help sign in
58 lines 2.0 kB history raw
1package soy.iko.opencode.ui.theme
3import android.app.Activity
4import android.os.Build
5import androidx.compose.foundation.isSystemInDarkTheme
6import androidx.compose.material3.MaterialTheme
7import androidx.compose.material3.darkColorScheme
8import androidx.compose.material3.dynamicDarkColorScheme
9import androidx.compose.material3.dynamicLightColorScheme
10import androidx.compose.material3.lightColorScheme
11import androidx.compose.runtime.Composable
12import androidx.compose.runtime.SideEffect
13import androidx.compose.ui.graphics.Color
14import androidx.compose.ui.graphics.toArgb
15import androidx.compose.ui.platform.LocalContext
16import androidx.compose.ui.platform.LocalView
17import androidx.core.view.WindowCompat
19private val DarkColors = darkColorScheme(
20 primary = Color(0xFF7AA2F7),
21 secondary = Color(0xFF9ECE6A),
22 tertiary = Color(0xFFBB9AF7),
23 background = Color(0xFF1A1B26),
24 surface = Color(0xFF1F2335),
27private val LightColors = lightColorScheme(
28 primary = Color(0xFF34548A),
29 secondary = Color(0xFF485E30),
30 tertiary = Color(0xFF5A4A78),
33@Composable
34fun OpencodeTheme(
35 darkTheme: Boolean = isSystemInDarkTheme(),
36 dynamicColor: Boolean = false,
37 content: @Composable () -> Unit,
38) {
39 val context = LocalContext.current
40 val colorScheme = when {
41 dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ->
42 if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
43 darkTheme -> DarkColors
44 else -> LightColors
45 }
46 val view = LocalView.current
47 if (!view.isInEditMode) {
48 SideEffect {
49 val window = (view.context as Activity).window
50 window.statusBarColor = colorScheme.background.toArgb()
51 WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = !darkTheme
52 }
53 }
54 MaterialTheme(
55 colorScheme = colorScheme,
56 content = content,
57 )