1 package im
.jfr
.i
.ui
.theme
3 import android
.app
.Activity
4 import android
.os
.Build
5 import androidx
.compose
.foundation
.isSystemInDarkTheme
6 import androidx
.compose
.material3
.MaterialTheme
7 import androidx
.compose
.material3
.darkColorScheme
8 import androidx
.compose
.material3
.dynamicDarkColorScheme
9 import androidx
.compose
.material3
.dynamicLightColorScheme
10 import androidx
.compose
.material3
.lightColorScheme
11 import androidx
.compose
.runtime
.Composable
12 import androidx
.compose
.runtime
.SideEffect
13 import androidx
.compose
.ui
.graphics
.toArgb
14 import androidx
.compose
.ui
.platform
.LocalContext
15 import androidx
.compose
.ui
.platform
.LocalView
16 import androidx
.core
.view
.WindowCompat
18 private val DarkColorScheme
= darkColorScheme(
20 secondary
= PurpleGrey80
,
24 private val LightColorScheme
= lightColorScheme(
26 secondary
= PurpleGrey40
,
29 /* Other default colors to override
30 background = Color(0xFFFFFBFE),
31 surface = Color(0xFFFFFBFE),
32 onPrimary = Color.White,
33 onSecondary = Color.White,
34 onTertiary = Color.White,
35 onBackground = Color(0xFF1C1B1F),
36 onSurface = Color(0xFF1C1B1F),
42 darkTheme
: Boolean = isSystemInDarkTheme(),
43 // Dynamic color is available on Android 12+
44 dynamicColor
: Boolean = true,
45 content
: @Composable () -> Unit
47 val colorScheme
= when {
48 dynamicColor
&& Build
.VERSION
.SDK_INT
>= Build
.VERSION_CODES
.S
-> {
49 val context
= LocalContext
.current
50 if (darkTheme
) dynamicDarkColorScheme(context
) else dynamicLightColorScheme(context
)
53 darkTheme
-> DarkColorScheme
54 else -> LightColorScheme
56 val view
= LocalView
.current
57 if (!view
.isInEditMode
) {
59 val window
= (view
.context
as Activity
).window
60 window
.statusBarColor
= colorScheme
.primary
.toArgb()
61 WindowCompat
.getInsetsController(window
, view
).isAppearanceLightStatusBars
= darkTheme
66 colorScheme
= colorScheme
,
67 typography
= Typography
,