skema warna untuk mode gelap

This commit is contained in:
202310715066 NABILA SUWANDIRA 2025-11-07 13:42:49 +07:00
parent 502ae78685
commit 5f4f7ed743

View File

@ -0,0 +1,75 @@
package com.example.kalkulatorbmi.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.graphics.toArgb
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalView
import androidx.core.view.WindowCompat
// Skema Warna untuk Mode Gelap
private val DarkColorScheme = darkColorScheme(
primary = PinkPrimaryDark,
secondary = PinkSecondaryDark,
tertiary = PinkTertiaryDark,
background = Color(0xFF1C1B1F), // Latar belakang gelap standar
surface = Color(0xFF1C1B1F),
onPrimary = White,
onSecondary = White,
onTertiary = Black,
onBackground = White,
onSurface = White,
)
// Skema Warna untuk Mode Terang
private val LightColorScheme = lightColorScheme(
primary = PinkPrimary,
secondary = PinkSecondary,
tertiary = PinkTertiary,
background = LightPinkBackground, // Latar belakang putih ke-pink-an
surface = White, // Card dan surface lainnya tetap putih bersih
onPrimary = White,
onSecondary = Black,
onTertiary = Black,
onBackground = Black,
onSurface = Black,
)
@Composable
fun KalkulatorBMITheme(
darkTheme: Boolean = isSystemInDarkTheme(),
dynamicColor: Boolean = false, // Matikan dynamic color agar tema pink kita yang dipakai
content: @Composable () -> Unit
) {
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
window.statusBarColor = colorScheme.primary.toArgb()
WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme
}
}
MaterialTheme(
colorScheme = colorScheme,
typography = Typography,
content = content
)
}