import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.android.library) alias(libs.plugins.compose.multiplatform) alias(libs.plugins.kotlin.plugin.compose) alias(libs.plugins.kotlin.plugin.serialization) alias(libs.plugins.metro) } kotlin { @OptIn(ExperimentalKotlinGradlePluginApi::class) compilerOptions { freeCompilerArgs.add("-Xexpect-actual-classes") } androidTarget { @OptIn(ExperimentalKotlinGradlePluginApi::class) compilerOptions { jvmTarget.set(JvmTarget.JVM_17) } } listOf(iosX64(), iosArm64(), iosSimulatorArm64()).forEach { target -> target.binaries.framework { baseName = "Shared" isStatic = true binaryOption("bundleId", "app.folio.shared") export(projects.core) } } @OptIn(ExperimentalWasmDsl::class) wasmJs { browser() } applyDefaultHierarchyTemplate() sourceSets { commonMain.dependencies { api(projects.core) api(projects.app.uiComponents) implementation(compose.runtime) implementation(compose.foundation) implementation(compose.material3) implementation(compose.ui) implementation(libs.kotlinx.coroutines.core) implementation(libs.kotlinx.serialization.json) implementation(libs.lifecycle.viewmodel.compose) } androidMain.dependencies { implementation(libs.androidx.activity.compose) } } } android { namespace = "app.folio.shared" compileSdk = 36 defaultConfig { minSdk = 24 } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } }