You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

23 lines
826 B

package org.jetbrains.compose.resources
import kotlinx.browser.window
private external class Intl {
class Locale(locale: String) {
val language: String
val region: String
}
}
internal actual fun getResourceEnvironment(): ResourceEnvironment {
val locale = Intl.Locale(window.navigator.language)
val isDarkTheme = window.matchMedia("(prefers-color-scheme: dark)").matches
//96 - standard browser DPI https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio
val dpi: Int = (window.devicePixelRatio * 96).toInt()
return ResourceEnvironment(
language = LanguageQualifier(locale.language),
region = RegionQualifier(locale.region),
theme = ThemeQualifier.selectByValue(isDarkTheme),
density = DensityQualifier.selectByValue(dpi)
)
}