import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl plugins { alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.compose) alias(libs.plugins.kotlin.compose) } kotlin { @OptIn(ExperimentalWasmDsl::class) wasmJs { browser() binaries.executable() } sourceSets { commonMain.dependencies { implementation(project(":shared")) implementation(project(":shared_ui")) // UI Elements implementation(libs.compose.runtime) implementation(libs.compose.foundation) implementation(libs.compose.material3) implementation(libs.compose.ui) // HTTP Client implementation(libs.ktor.serialization.kotlinx.json) implementation(libs.ktor.client.core) // implementation(libs.ktor.client.cio) implementation(libs.ktor.client.content.negotiation) } wasmJsMain.dependencies { } } } /* * The directory produced by wasmJsBrowserDistribution. * * This is deliberately kept here rather than being referenced by * the server project. The web project owns its build layout. */ val webDistributionDirectory = layout.buildDirectory.dir("dist/wasmJs/productionExecutable") /* * Expose the web distribution as an outgoing artifact. * * Other projects can consume: * * project(path = ":web", configuration = "webDistribution") * * without knowing where the files actually live. */ val webDistributionTask = tasks.named("wasmJsBrowserDistribution") configurations { create("webDistribution") { isCanBeConsumed = true isCanBeResolved = false } } artifacts { add( "webDistribution", webDistributionDirectory ) { builtBy(webDistributionTask) } }