plugins { id("gwenedeg.kmp.library") id("gwenedeg.compose") alias(libs.plugins.kotlinSerialization) } kotlin { // Targets are declared by the convention plugin; these calls return the // existing targets, so this only adds the iOS framework packaging. listOf( iosArm64(), iosSimulatorArm64(), ).forEach { iosTarget -> iosTarget.binaries.framework { baseName = "Shared" isStatic = true } } androidLibrary { namespace = "fr.ajaury.gwenedeg.shared" androidResources { enable = true } withHostTest { isIncludeAndroidResources = true } } sourceSets { androidMain.dependencies { implementation(libs.compose.uiToolingPreview) } commonMain.dependencies { // Core modules implementation(projects.core.audioplayer) implementation(projects.core.coroutines) implementation(projects.core.logging) implementation(projects.core.model) // Data modules implementation(projects.data.records) implementation(projects.data.resources) implementation(projects.data.subtitle) implementation(libs.compose.runtime) implementation(libs.compose.foundation) implementation(libs.compose.material3) implementation(libs.compose.material.icons.extended) implementation(libs.compose.ui) implementation(libs.compose.uiToolingPreview) // Lifecycle implementation(libs.lifecycle.viewmodelCompose) implementation(libs.lifecycle.runtimeCompose) implementation(libs.lifecycle.viewmodelNavigation3) // Navigation implementation(libs.navigation3) // DI implementation(project.dependencies.platform(libs.koin.bom)) implementation(libs.koin.core) implementation(libs.koin.core.viewmodel) implementation(libs.koin.compose) implementation(libs.koin.compose.viewmodel) } jvmTest.dependencies { // Koin configuration validation implementation(project.dependencies.platform(libs.koin.bom)) implementation(libs.koin.test) } jsMain.dependencies { implementation(libs.wrappers.browser) } } } dependencies { androidRuntimeClasspath(libs.compose.uiTooling) }