diff --git a/composeApp/src/androidMain/kotlin/moe/lava/banksia/native/BanksiaTheme.android.kt b/composeApp/src/androidMain/kotlin/moe/lava/banksia/native/BanksiaTheme.android.kt index a817672..0ae9d20 100644 --- a/composeApp/src/androidMain/kotlin/moe/lava/banksia/native/BanksiaTheme.android.kt +++ b/composeApp/src/androidMain/kotlin/moe/lava/banksia/native/BanksiaTheme.android.kt @@ -1,7 +1,7 @@ package moe.lava.banksia.native import android.os.Build -import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ColorScheme import androidx.compose.material3.darkColorScheme import androidx.compose.material3.dynamicDarkColorScheme import androidx.compose.material3.dynamicLightColorScheme @@ -10,23 +10,15 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext @Composable -actual fun BanksiaTheme( +actual fun BanksiaTheme.colors( darkTheme: Boolean, - dynamicColor: Boolean, - 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() + dynamicColor: Boolean +): ColorScheme = when { + dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) } - MaterialTheme( - colorScheme = colorScheme, - content = content - ) + darkTheme -> darkColorScheme() + else -> lightColorScheme() } diff --git a/composeApp/src/commonMain/kotlin/moe/lava/banksia/native/BanksiaTheme.kt b/composeApp/src/commonMain/kotlin/moe/lava/banksia/native/BanksiaTheme.kt index 089ce63..4f2d298 100644 --- a/composeApp/src/commonMain/kotlin/moe/lava/banksia/native/BanksiaTheme.kt +++ b/composeApp/src/commonMain/kotlin/moe/lava/banksia/native/BanksiaTheme.kt @@ -1,12 +1,27 @@ package moe.lava.banksia.native import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.ColorScheme +import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable @Composable -expect fun BanksiaTheme( +fun BanksiaTheme( darkTheme: Boolean = isSystemInDarkTheme(), - // Dynamic color is available on Android 12+ dynamicColor: Boolean = true, - content: @Composable () -> Unit -) + content: @Composable (() -> Unit) +) { + MaterialTheme( + colorScheme = BanksiaTheme.colors(darkTheme, dynamicColor), + content = content + ) +} + +@Composable +expect fun BanksiaTheme.colors(darkTheme: Boolean, dynamicColor: Boolean): ColorScheme + +object BanksiaTheme { + val colors: ColorScheme + @Composable + get() = colors(isSystemInDarkTheme(), true) +} diff --git a/composeApp/src/iosMain/kotlin/moe/lava/banksia/native/BanksiaTheme.ios.kt b/composeApp/src/iosMain/kotlin/moe/lava/banksia/native/BanksiaTheme.ios.kt index 354541c..234025b 100644 --- a/composeApp/src/iosMain/kotlin/moe/lava/banksia/native/BanksiaTheme.ios.kt +++ b/composeApp/src/iosMain/kotlin/moe/lava/banksia/native/BanksiaTheme.ios.kt @@ -1,23 +1,15 @@ package moe.lava.banksia.native -import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ColorScheme import androidx.compose.material3.darkColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable @Composable -actual fun BanksiaTheme( +actual fun BanksiaTheme.colors( darkTheme: Boolean, - dynamicColor: Boolean, - content: @Composable (() -> Unit) -) { - val colorScheme = when { - darkTheme -> darkColorScheme() - else -> lightColorScheme() - } - - MaterialTheme( - colorScheme = colorScheme, - content = content - ) + dynamicColor: Boolean +): ColorScheme = when { + darkTheme -> darkColorScheme() + else -> lightColorScheme() }