package dev.beefers.vendetta.manager.ui.theme import android.app.Activity import android.os.Build import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material3.MaterialTheme import androidx.compose.material3.darkColorScheme import androidx.compose.material3.dynamicDarkColorScheme import androidx.compose.material3.dynamicLightColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.runtime.SideEffect import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView import androidx.core.view.WindowCompat import com.google.accompanist.systemuicontroller.rememberSystemUiController import dev.beefers.vendetta.manager.domain.manager.PreferenceManager import dev.beefers.vendetta.manager.domain.manager.Theme import org.koin.androidx.compose.get @Composable fun VendettaManagerTheme( content: @Composable () -> Unit ) { val prefs = get() val dynamicColor = prefs.monet val darkTheme = when (prefs.theme) { Theme.SYSTEM -> isSystemInDarkTheme() Theme.DARK -> true Theme.LIGHT -> false } val systemUiController = rememberSystemUiController() val colorScheme = when { dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { val context = LocalContext.current if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) } darkTheme -> darkColorScheme() else -> lightColorScheme() } val view = LocalView.current if (!view.isInEditMode) { SideEffect { val window = (view.context as Activity).window WindowCompat.setDecorFitsSystemWindows(window, false) systemUiController.setSystemBarsColor(Color.Transparent, darkIcons = !darkTheme) } } MaterialTheme( colorScheme = colorScheme, typography = Typography, content = content ) }