new: integrate pages for deepen and about

This commit is contained in:
2026-07-06 22:58:48 +02:00
parent a74e9396e6
commit a272431c37
20 changed files with 493 additions and 75 deletions
@@ -0,0 +1,44 @@
package fr.ajaury.gwenedeg.web.ui
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.interop.UIKitView
import kotlinx.cinterop.ExperimentalForeignApi
import platform.CoreGraphics.CGRectZero
import platform.Foundation.NSURL
import platform.Foundation.NSURLRequest
import platform.UIKit.UIUserInterfaceStyle
import platform.UIKit.UIUserInterfaceStyle.UIUserInterfaceStyleDark
import platform.UIKit.UIUserInterfaceStyle.UIUserInterfaceStyleLight
import platform.WebKit.WKWebView
import platform.WebKit.WKWebViewConfiguration
@OptIn(ExperimentalForeignApi::class)
@Composable
actual fun PlatformWebView(
url: String,
darkTheme: Boolean,
modifier: Modifier,
) {
UIKitView(
modifier = modifier,
factory = {
WKWebView(
frame = CGRectZero.readValue(),
configuration = WKWebViewConfiguration(),
).apply {
setOverrideUserInterfaceStyle(darkTheme.toInterfaceStyle())
NSURL.URLWithString(url)?.let { nsUrl ->
loadRequest(NSURLRequest(uRL = nsUrl))
}
}
},
// Re-apply on recomposition so a light/dark switch takes effect without reloading the page.
update = { webView ->
webView.setOverrideUserInterfaceStyle(darkTheme.toInterfaceStyle())
},
)
}
private fun Boolean.toInterfaceStyle(): UIUserInterfaceStyle =
if (this) UIUserInterfaceStyleDark else UIUserInterfaceStyleLight