From 8da391b6ced2d4538c8e7104fed3386088e3c696 Mon Sep 17 00:00:00 2001 From: jay-tux Date: Sun, 30 Aug 2026 21:24:56 +0200 Subject: [PATCH] Web UI: width detection --- clients/compose/build.gradle.kts | 2 +- .../com/jaytux/phoebench/clients/Main.kt | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/clients/compose/build.gradle.kts b/clients/compose/build.gradle.kts index aa55454..b62aaf9 100644 --- a/clients/compose/build.gradle.kts +++ b/clients/compose/build.gradle.kts @@ -13,7 +13,7 @@ plugins { alias(libs.plugins.buildconfig) } -version = PhoebenchVersion(1, 1, 1) +version = PhoebenchVersion(1, 1, 2) if((version as PhoebenchVersion) < (rootProject.version as PhoebenchVersion)) throw GradleException("UI Clients version must be at least as high as protocol/common version") diff --git a/clients/compose/src/wasmJsMain/kotlin/com/jaytux/phoebench/clients/Main.kt b/clients/compose/src/wasmJsMain/kotlin/com/jaytux/phoebench/clients/Main.kt index f1f4928..3da1537 100644 --- a/clients/compose/src/wasmJsMain/kotlin/com/jaytux/phoebench/clients/Main.kt +++ b/clients/compose/src/wasmJsMain/kotlin/com/jaytux/phoebench/clients/Main.kt @@ -1,14 +1,30 @@ package com.jaytux.phoebench.clients +import androidx.compose.runtime.CompositionLocal +import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.platform.LocalWindowInfo +import androidx.compose.ui.unit.dp import androidx.compose.ui.window.ComposeViewport +import com.jaytux.phoebench.clients.theme.GlobalUiMode +import com.jaytux.phoebench.clients.theme.UiMode import kotlinx.browser.document +import kotlinx.browser.window @OptIn(ExperimentalComposeUiApi::class) suspend fun main() { config = loadConfig() ComposeViewport(document.body!!) { - App() + val width = LocalWindowInfo.current.containerSize + var mode by remember(width) { mutableStateOf(UiMode.fromDp(width.width.dp)) } + + CompositionLocalProvider(GlobalUiMode provides mode) { + App() + } } } \ No newline at end of file