1+ package com.smarttoolfactory.composeimage.ui.theme
2+
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.ViewCompat
17+
18+ private val DarkColorScheme = darkColorScheme(
19+ primary = Purple80 ,
20+ secondary = PurpleGrey80 ,
21+ tertiary = Pink80
22+ )
23+
24+ private val LightColorScheme = lightColorScheme(
25+ primary = Purple40 ,
26+ secondary = PurpleGrey40 ,
27+ tertiary = Pink40
28+
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),
37+ */
38+ )
39+
40+ @Composable
41+ fun ComposeImageTheme (
42+ darkTheme : Boolean = isSystemInDarkTheme(),
43+ // Dynamic color is available on Android 12+
44+ dynamicColor : Boolean = true,
45+ content : @Composable () -> Unit
46+ ) {
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)
51+ }
52+ darkTheme -> DarkColorScheme
53+ else -> LightColorScheme
54+ }
55+ val view = LocalView .current
56+ if (! view.isInEditMode) {
57+ SideEffect {
58+ (view.context as Activity ).window.statusBarColor = colorScheme.primary.toArgb()
59+ ViewCompat .getWindowInsetsController(view)?.isAppearanceLightStatusBars = darkTheme
60+ }
61+ }
62+
63+ MaterialTheme (
64+ colorScheme = colorScheme,
65+ typography = Typography ,
66+ content = content
67+ )
68+ }
0 commit comments