git.iko.soy/opencode-android
on 3e723a1 help sign in
56 lines 1.8 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.platform.LocalContext
15import androidx.compose.ui.platform.LocalView
16import androidx.core.view.WindowCompat
18private val DarkColors = darkColorScheme(
19 primary = Color(0xFF7AA2F7),
20 secondary = Color(0xFF9ECE6A),
21 tertiary = Color(0xFFBB9AF7),
22 background = Color(0xFF1A1B26),
23 surface = Color(0xFF1F2335),
26private val LightColors = lightColorScheme(
27 primary = Color(0xFF34548A),
28 secondary = Color(0xFF485E30),
29 tertiary = Color(0xFF5A4A78),
32@Composable
33fun OpencodeTheme(
34 darkTheme: Boolean = isSystemInDarkTheme(),
35 dynamicColor: Boolean = false,
36 content: @Composable () -> Unit,
37) {
38 val context = LocalContext.current
39 val colorScheme = when {
40 dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ->
41 if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
42 darkTheme -> DarkColors
43 else -> LightColors
44 }
45 val view = LocalView.current
46 if (!view.isInEditMode) {
47 SideEffect {
48 val window = (view.context as Activity).window
49 WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = !darkTheme
50 }
51 }
52 MaterialTheme(
53 colorScheme = colorScheme,
54 content = content,
55 )