From 5f4f7ed743eb73f4cd4fdc9e262f60ab74db0ed5 Mon Sep 17 00:00:00 2001 From: nabilasuwandira <202310715066@mhs.ubharajaya.ac.id> Date: Fri, 7 Nov 2025 13:42:49 +0700 Subject: [PATCH] skema warna untuk mode gelap --- .../java/com/example/kalkulatorbmi/theme.kt | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 app/src/main/java/com/example/kalkulatorbmi/theme.kt diff --git a/app/src/main/java/com/example/kalkulatorbmi/theme.kt b/app/src/main/java/com/example/kalkulatorbmi/theme.kt new file mode 100644 index 0000000..0891f33 --- /dev/null +++ b/app/src/main/java/com/example/kalkulatorbmi/theme.kt @@ -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 + ) +}