diff --git a/.run/cmp-ios.run.xml b/.run/cmp-ios.run.xml
new file mode 100644
index 000000000..3cfa69a51
--- /dev/null
+++ b/.run/cmp-ios.run.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt b/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt
index 3ddfd7b9e..ce47af4bf 100644
--- a/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt
+++ b/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt
@@ -24,6 +24,7 @@ class CMPFeatureConventionPlugin : Plugin {
add("commonMainImplementation", libs.findLibrary("koin.compose.viewmodel").get())
add("commonMainImplementation", libs.findLibrary("jb.composeRuntime").get())
+ add("commonMainImplementation", libs.findLibrary("jb.lifecycle.compose").get())
add("commonMainImplementation", libs.findLibrary("jb.composeViewmodel").get())
add("commonMainImplementation", libs.findLibrary("jb.lifecycleViewmodel").get())
add("commonMainImplementation", libs.findLibrary("jb.lifecycleViewmodelSavedState").get())
diff --git a/build.gradle.kts b/build.gradle.kts
index ff96dd548..a34b3aeb4 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -8,6 +8,7 @@ buildscript {
}
plugins {
+ alias(libs.plugins.kotlinCocoapods) apply false
alias(libs.plugins.android.application) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.android.test) apply false
diff --git a/cmp-android/dependencies/demoDebugRuntimeClasspath.txt b/cmp-android/dependencies/demoDebugRuntimeClasspath.txt
index 97c622612..f9ee3fb08 100644
--- a/cmp-android/dependencies/demoDebugRuntimeClasspath.txt
+++ b/cmp-android/dependencies/demoDebugRuntimeClasspath.txt
@@ -17,61 +17,69 @@ androidx.camera:camera-view:1.4.1
androidx.collection:collection-jvm:1.5.0
androidx.collection:collection-ktx:1.5.0
androidx.collection:collection:1.5.0
-androidx.compose.animation:animation-android:1.8.2
-androidx.compose.animation:animation-core-android:1.8.2
-androidx.compose.animation:animation-core:1.8.2
-androidx.compose.animation:animation:1.8.2
-androidx.compose.foundation:foundation-android:1.8.2
-androidx.compose.foundation:foundation-layout-android:1.8.2
-androidx.compose.foundation:foundation-layout:1.8.2
-androidx.compose.foundation:foundation:1.8.2
+androidx.compose.animation:animation-android:1.8.3
+androidx.compose.animation:animation-core-android:1.8.3
+androidx.compose.animation:animation-core:1.8.3
+androidx.compose.animation:animation:1.8.3
+androidx.compose.foundation:foundation-android:1.8.3
+androidx.compose.foundation:foundation-layout-android:1.8.3
+androidx.compose.foundation:foundation-layout:1.8.3
+androidx.compose.foundation:foundation:1.8.3
+androidx.compose.material3.adaptive:adaptive-android:1.1.0
+androidx.compose.material3.adaptive:adaptive-layout-android:1.1.0
+androidx.compose.material3.adaptive:adaptive-layout:1.1.0
+androidx.compose.material3.adaptive:adaptive-navigation-android:1.1.0
+androidx.compose.material3.adaptive:adaptive-navigation:1.1.0
+androidx.compose.material3.adaptive:adaptive:1.1.0
+androidx.compose.material3:material3-adaptive-navigation-suite-android:1.3.2
+androidx.compose.material3:material3-adaptive-navigation-suite:1.3.2
androidx.compose.material3:material3-android:1.3.2
androidx.compose.material3:material3:1.3.2
-androidx.compose.material:material-android:1.8.2
-androidx.compose.material:material-icons-core-android:1.7.6
-androidx.compose.material:material-icons-core:1.7.6
-androidx.compose.material:material-icons-extended-android:1.7.6
-androidx.compose.material:material-icons-extended:1.7.6
-androidx.compose.material:material-ripple-android:1.8.2
-androidx.compose.material:material-ripple:1.8.2
-androidx.compose.material:material:1.8.2
-androidx.compose.runtime:runtime-android:1.8.2
-androidx.compose.runtime:runtime-saveable-android:1.8.2
-androidx.compose.runtime:runtime-saveable:1.8.2
-androidx.compose.runtime:runtime:1.8.2
-androidx.compose.ui:ui-android:1.8.2
-androidx.compose.ui:ui-geometry-android:1.8.2
-androidx.compose.ui:ui-geometry:1.8.2
-androidx.compose.ui:ui-graphics-android:1.8.2
-androidx.compose.ui:ui-graphics:1.8.2
-androidx.compose.ui:ui-text-android:1.8.2
-androidx.compose.ui:ui-text:1.8.2
-androidx.compose.ui:ui-tooling-android:1.8.2
-androidx.compose.ui:ui-tooling-data-android:1.8.2
-androidx.compose.ui:ui-tooling-data:1.8.2
-androidx.compose.ui:ui-tooling-preview-android:1.8.2
-androidx.compose.ui:ui-tooling-preview:1.8.2
-androidx.compose.ui:ui-tooling:1.8.2
-androidx.compose.ui:ui-unit-android:1.8.2
-androidx.compose.ui:ui-unit:1.8.2
-androidx.compose.ui:ui-util-android:1.8.2
-androidx.compose.ui:ui-util:1.8.2
-androidx.compose.ui:ui:1.8.2
-androidx.compose:compose-bom:2024.12.01
+androidx.compose.material:material-android:1.8.3
+androidx.compose.material:material-icons-core-android:1.7.8
+androidx.compose.material:material-icons-core:1.7.8
+androidx.compose.material:material-icons-extended-android:1.7.8
+androidx.compose.material:material-icons-extended:1.7.8
+androidx.compose.material:material-ripple-android:1.8.3
+androidx.compose.material:material-ripple:1.8.3
+androidx.compose.material:material:1.8.3
+androidx.compose.runtime:runtime-android:1.8.3
+androidx.compose.runtime:runtime-saveable-android:1.8.3
+androidx.compose.runtime:runtime-saveable:1.8.3
+androidx.compose.runtime:runtime:1.8.3
+androidx.compose.ui:ui-android:1.8.3
+androidx.compose.ui:ui-geometry-android:1.8.3
+androidx.compose.ui:ui-geometry:1.8.3
+androidx.compose.ui:ui-graphics-android:1.8.3
+androidx.compose.ui:ui-graphics:1.8.3
+androidx.compose.ui:ui-text-android:1.8.3
+androidx.compose.ui:ui-text:1.8.3
+androidx.compose.ui:ui-tooling-android:1.8.3
+androidx.compose.ui:ui-tooling-data-android:1.8.3
+androidx.compose.ui:ui-tooling-data:1.8.3
+androidx.compose.ui:ui-tooling-preview-android:1.8.3
+androidx.compose.ui:ui-tooling-preview:1.8.3
+androidx.compose.ui:ui-tooling:1.8.3
+androidx.compose.ui:ui-unit-android:1.8.3
+androidx.compose.ui:ui-unit:1.8.3
+androidx.compose.ui:ui-util-android:1.8.3
+androidx.compose.ui:ui-util:1.8.3
+androidx.compose.ui:ui:1.8.3
+androidx.compose:compose-bom:2025.06.01
androidx.concurrent:concurrent-futures-ktx:1.1.0
androidx.concurrent:concurrent-futures:1.1.0
-androidx.core:core-ktx:1.15.0
+androidx.core:core-ktx:1.16.0
androidx.core:core-splashscreen:1.0.1
androidx.core:core-viewtree:1.0.0
-androidx.core:core:1.15.0
+androidx.core:core:1.16.0
androidx.cursoradapter:cursoradapter:1.0.0
androidx.customview:customview-poolingcontainer:1.0.0
androidx.customview:customview:1.1.0
-androidx.databinding:databinding-adapters:8.7.3
-androidx.databinding:databinding-common:8.7.3
-androidx.databinding:databinding-ktx:8.7.3
-androidx.databinding:databinding-runtime:8.7.3
-androidx.databinding:viewbinding:8.7.3
+androidx.databinding:databinding-adapters:8.10.0
+androidx.databinding:databinding-common:8.10.0
+androidx.databinding:databinding-ktx:8.10.0
+androidx.databinding:databinding-runtime:8.10.0
+androidx.databinding:viewbinding:8.10.0
androidx.datastore:datastore-core:1.0.0
androidx.datastore:datastore-preferences-core:1.0.0
androidx.datastore:datastore-preferences:1.0.0
@@ -130,15 +138,18 @@ androidx.savedstate:savedstate-ktx:1.3.1
androidx.savedstate:savedstate:1.3.1
androidx.slidingpanelayout:slidingpanelayout:1.2.0
androidx.startup:startup-runtime:1.2.0
-androidx.tracing:tracing-ktx:1.2.0
-androidx.tracing:tracing:1.2.0
+androidx.tracing:tracing-android:1.3.0
+androidx.tracing:tracing-ktx:1.3.0
+androidx.tracing:tracing:1.3.0
androidx.transition:transition:1.4.1
androidx.vectordrawable:vectordrawable-animated:1.2.0
androidx.vectordrawable:vectordrawable:1.2.0
androidx.versionedparcelable:versionedparcelable:1.1.1
androidx.viewpager:viewpager:1.0.0
androidx.window.extensions.core:core:1.0.0
-androidx.window:window:1.2.0
+androidx.window:window-core-android:1.3.0
+androidx.window:window-core:1.3.0
+androidx.window:window:1.3.0
co.touchlab:kermit-android-debug:2.0.6
co.touchlab:kermit-core-android-debug:2.0.6
co.touchlab:kermit-core:2.0.6
@@ -159,7 +170,8 @@ com.attafitamim.krop:ui-android:0.1.6
com.attafitamim.krop:ui:0.1.6
com.caverock:androidsvg-aar:1.4
com.google.accompanist:accompanist-drawablepainter:0.37.3
-com.google.accompanist:accompanist-permissions:0.37.3
+com.google.accompanist:accompanist-pager:0.36.0
+com.google.accompanist:accompanist-permissions:0.36.0
com.google.android.datatransport:transport-api:3.2.0
com.google.android.datatransport:transport-backend-cct:3.3.0
com.google.android.datatransport:transport-runtime:3.3.0
@@ -231,6 +243,7 @@ de.jensklingenberg.ktorfit:ktorfit-lib-light:2.5.2
de.jensklingenberg.ktorfit:ktorfit-lib:2.5.2
dev.chrisbanes.material3:material3-window-size-class-multiplatform-android:0.5.0
dev.chrisbanes.material3:material3-window-size-class-multiplatform:0.5.0
+dev.chrisbanes.snapper:snapper:0.2.2
io.coil-kt.coil3:coil-android:3.2.0
io.coil-kt.coil3:coil-compose-android:3.2.0
io.coil-kt.coil3:coil-compose-core-android:3.2.0
@@ -271,12 +284,14 @@ io.github.panpf.zoomimage:zoomimage-core-android:1.3.0
io.github.panpf.zoomimage:zoomimage-core-coil3-android:1.3.0
io.github.panpf.zoomimage:zoomimage-core-coil3:1.3.0
io.github.panpf.zoomimage:zoomimage-core:1.3.0
-io.github.vinceglb:filekit-core-android:0.10.0
-io.github.vinceglb:filekit-core:0.10.0
-io.github.vinceglb:filekit-dialogs-android:0.10.0
-io.github.vinceglb:filekit-dialogs-compose-android:0.10.0
-io.github.vinceglb:filekit-dialogs-compose:0.10.0
-io.github.vinceglb:filekit-dialogs:0.10.0
+io.github.vinceglb:filekit-compose-android:0.8.8
+io.github.vinceglb:filekit-compose:0.8.8
+io.github.vinceglb:filekit-core-android:0.10.0-beta04
+io.github.vinceglb:filekit-core:0.10.0-beta04
+io.github.vinceglb:filekit-dialogs-android:0.10.0-beta04
+io.github.vinceglb:filekit-dialogs-compose-android:0.10.0-beta04
+io.github.vinceglb:filekit-dialogs-compose:0.10.0-beta04
+io.github.vinceglb:filekit-dialogs:0.10.0-beta04
io.insert-koin:koin-android:4.1.0
io.insert-koin:koin-androidx-compose:4.1.0
io.insert-koin:koin-androidx-navigation:4.1.0
@@ -345,7 +360,8 @@ org.jetbrains.androidx.navigation:navigation-common:2.9.0-beta03
org.jetbrains.androidx.navigation:navigation-compose:2.9.0-beta03
org.jetbrains.androidx.navigation:navigation-runtime:2.9.0-beta03
org.jetbrains.androidx.savedstate:savedstate-compose:1.3.1
-org.jetbrains.androidx.savedstate:savedstate:1.3.3
+org.jetbrains.androidx.savedstate:savedstate:1.3.1
+org.jetbrains.androidx.window:window-core:1.3.1
org.jetbrains.compose.animation:animation-core:1.8.2
org.jetbrains.compose.animation:animation:1.8.2
org.jetbrains.compose.annotation-internal:annotation:1.8.2
@@ -356,6 +372,10 @@ org.jetbrains.compose.components:components-ui-tooling-preview-android:1.8.2
org.jetbrains.compose.components:components-ui-tooling-preview:1.8.2
org.jetbrains.compose.foundation:foundation-layout:1.8.2
org.jetbrains.compose.foundation:foundation:1.8.2
+org.jetbrains.compose.material3.adaptive:adaptive-layout:1.1.2
+org.jetbrains.compose.material3.adaptive:adaptive-navigation:1.1.2
+org.jetbrains.compose.material3.adaptive:adaptive:1.1.2
+org.jetbrains.compose.material3:material3-adaptive-navigation-suite:1.8.2
org.jetbrains.compose.material3:material3:1.8.2
org.jetbrains.compose.material:material-icons-core:1.7.3
org.jetbrains.compose.material:material-icons-extended:1.7.3
@@ -374,12 +394,12 @@ org.jetbrains.compose.ui:ui-tooling:1.8.2
org.jetbrains.compose.ui:ui-unit:1.8.2
org.jetbrains.compose.ui:ui-util:1.8.2
org.jetbrains.compose.ui:ui:1.8.2
-org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10
-org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10
-org.jetbrains.kotlin:kotlin-reflect:2.1.0
-org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.23
-org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20
-org.jetbrains.kotlin:kotlin-stdlib:2.2.0
+org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.20
+org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.20
+org.jetbrains.kotlin:kotlin-reflect:2.1.20
+org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0
+org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0
+org.jetbrains.kotlin:kotlin-stdlib:2.1.21
org.jetbrains.kotlinx:atomicfu-jvm:0.23.2
org.jetbrains.kotlinx:atomicfu:0.23.2
org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8
@@ -390,19 +410,19 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.2
-org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1-0.6.x-compat
-org.jetbrains.kotlinx:kotlinx-datetime:0.7.1-0.6.x-compat
-org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.8.0
-org.jetbrains.kotlinx:kotlinx-io-bytestring:0.8.0
-org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.8.0
-org.jetbrains.kotlinx:kotlinx-io-core:0.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0
+org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1
+org.jetbrains.kotlinx:kotlinx-datetime:0.7.1
+org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.7.0
+org.jetbrains.kotlinx:kotlinx-io-bytestring:0.7.0
+org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.7.0
+org.jetbrains.kotlinx:kotlinx-io-core:0.7.0
+org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1
org.jetbrains:annotations:23.0.0
org.jspecify:jspecify:1.0.0
org.slf4j:slf4j-api:2.0.16
diff --git a/cmp-android/dependencies/demoReleaseRuntimeClasspath.txt b/cmp-android/dependencies/demoReleaseRuntimeClasspath.txt
index 1266bed3d..836c3e7d8 100644
--- a/cmp-android/dependencies/demoReleaseRuntimeClasspath.txt
+++ b/cmp-android/dependencies/demoReleaseRuntimeClasspath.txt
@@ -17,61 +17,69 @@ androidx.camera:camera-view:1.4.1
androidx.collection:collection-jvm:1.5.0
androidx.collection:collection-ktx:1.5.0
androidx.collection:collection:1.5.0
-androidx.compose.animation:animation-android:1.8.2
-androidx.compose.animation:animation-core-android:1.8.2
-androidx.compose.animation:animation-core:1.8.2
-androidx.compose.animation:animation:1.8.2
-androidx.compose.foundation:foundation-android:1.8.2
-androidx.compose.foundation:foundation-layout-android:1.8.2
-androidx.compose.foundation:foundation-layout:1.8.2
-androidx.compose.foundation:foundation:1.8.2
+androidx.compose.animation:animation-android:1.8.3
+androidx.compose.animation:animation-core-android:1.8.3
+androidx.compose.animation:animation-core:1.8.3
+androidx.compose.animation:animation:1.8.3
+androidx.compose.foundation:foundation-android:1.8.3
+androidx.compose.foundation:foundation-layout-android:1.8.3
+androidx.compose.foundation:foundation-layout:1.8.3
+androidx.compose.foundation:foundation:1.8.3
+androidx.compose.material3.adaptive:adaptive-android:1.1.0
+androidx.compose.material3.adaptive:adaptive-layout-android:1.1.0
+androidx.compose.material3.adaptive:adaptive-layout:1.1.0
+androidx.compose.material3.adaptive:adaptive-navigation-android:1.1.0
+androidx.compose.material3.adaptive:adaptive-navigation:1.1.0
+androidx.compose.material3.adaptive:adaptive:1.1.0
+androidx.compose.material3:material3-adaptive-navigation-suite-android:1.3.2
+androidx.compose.material3:material3-adaptive-navigation-suite:1.3.2
androidx.compose.material3:material3-android:1.3.2
androidx.compose.material3:material3:1.3.2
-androidx.compose.material:material-android:1.8.2
-androidx.compose.material:material-icons-core-android:1.7.6
-androidx.compose.material:material-icons-core:1.7.6
-androidx.compose.material:material-icons-extended-android:1.7.6
-androidx.compose.material:material-icons-extended:1.7.6
-androidx.compose.material:material-ripple-android:1.8.2
-androidx.compose.material:material-ripple:1.8.2
-androidx.compose.material:material:1.8.2
-androidx.compose.runtime:runtime-android:1.8.2
-androidx.compose.runtime:runtime-saveable-android:1.8.2
-androidx.compose.runtime:runtime-saveable:1.8.2
-androidx.compose.runtime:runtime:1.8.2
-androidx.compose.ui:ui-android:1.8.2
-androidx.compose.ui:ui-geometry-android:1.8.2
-androidx.compose.ui:ui-geometry:1.8.2
-androidx.compose.ui:ui-graphics-android:1.8.2
-androidx.compose.ui:ui-graphics:1.8.2
-androidx.compose.ui:ui-text-android:1.8.2
-androidx.compose.ui:ui-text:1.8.2
-androidx.compose.ui:ui-tooling-android:1.8.2
-androidx.compose.ui:ui-tooling-data-android:1.8.2
-androidx.compose.ui:ui-tooling-data:1.8.2
-androidx.compose.ui:ui-tooling-preview-android:1.8.2
-androidx.compose.ui:ui-tooling-preview:1.8.2
-androidx.compose.ui:ui-tooling:1.8.2
-androidx.compose.ui:ui-unit-android:1.8.2
-androidx.compose.ui:ui-unit:1.8.2
-androidx.compose.ui:ui-util-android:1.8.2
-androidx.compose.ui:ui-util:1.8.2
-androidx.compose.ui:ui:1.8.2
-androidx.compose:compose-bom:2024.12.01
+androidx.compose.material:material-android:1.8.3
+androidx.compose.material:material-icons-core-android:1.7.8
+androidx.compose.material:material-icons-core:1.7.8
+androidx.compose.material:material-icons-extended-android:1.7.8
+androidx.compose.material:material-icons-extended:1.7.8
+androidx.compose.material:material-ripple-android:1.8.3
+androidx.compose.material:material-ripple:1.8.3
+androidx.compose.material:material:1.8.3
+androidx.compose.runtime:runtime-android:1.8.3
+androidx.compose.runtime:runtime-saveable-android:1.8.3
+androidx.compose.runtime:runtime-saveable:1.8.3
+androidx.compose.runtime:runtime:1.8.3
+androidx.compose.ui:ui-android:1.8.3
+androidx.compose.ui:ui-geometry-android:1.8.3
+androidx.compose.ui:ui-geometry:1.8.3
+androidx.compose.ui:ui-graphics-android:1.8.3
+androidx.compose.ui:ui-graphics:1.8.3
+androidx.compose.ui:ui-text-android:1.8.3
+androidx.compose.ui:ui-text:1.8.3
+androidx.compose.ui:ui-tooling-android:1.8.3
+androidx.compose.ui:ui-tooling-data-android:1.8.3
+androidx.compose.ui:ui-tooling-data:1.8.3
+androidx.compose.ui:ui-tooling-preview-android:1.8.3
+androidx.compose.ui:ui-tooling-preview:1.8.3
+androidx.compose.ui:ui-tooling:1.8.3
+androidx.compose.ui:ui-unit-android:1.8.3
+androidx.compose.ui:ui-unit:1.8.3
+androidx.compose.ui:ui-util-android:1.8.3
+androidx.compose.ui:ui-util:1.8.3
+androidx.compose.ui:ui:1.8.3
+androidx.compose:compose-bom:2025.06.01
androidx.concurrent:concurrent-futures-ktx:1.1.0
androidx.concurrent:concurrent-futures:1.1.0
-androidx.core:core-ktx:1.15.0
+androidx.core:core-ktx:1.16.0
androidx.core:core-splashscreen:1.0.1
androidx.core:core-viewtree:1.0.0
-androidx.core:core:1.15.0
+androidx.core:core:1.16.0
androidx.cursoradapter:cursoradapter:1.0.0
androidx.customview:customview-poolingcontainer:1.0.0
androidx.customview:customview:1.1.0
-androidx.databinding:databinding-adapters:8.7.3
-androidx.databinding:databinding-common:8.7.3
-androidx.databinding:databinding-ktx:8.7.3
-androidx.databinding:databinding-runtime:8.7.3
-androidx.databinding:viewbinding:8.7.3
+androidx.databinding:databinding-adapters:8.10.0
+androidx.databinding:databinding-common:8.10.0
+androidx.databinding:databinding-ktx:8.10.0
+androidx.databinding:databinding-runtime:8.10.0
+androidx.databinding:viewbinding:8.10.0
androidx.datastore:datastore-core:1.0.0
androidx.datastore:datastore-preferences-core:1.0.0
androidx.datastore:datastore-preferences:1.0.0
@@ -130,15 +138,18 @@ androidx.savedstate:savedstate-ktx:1.3.1
androidx.savedstate:savedstate:1.3.1
androidx.slidingpanelayout:slidingpanelayout:1.2.0
androidx.startup:startup-runtime:1.2.0
-androidx.tracing:tracing-ktx:1.2.0
-androidx.tracing:tracing:1.2.0
+androidx.tracing:tracing-android:1.3.0
+androidx.tracing:tracing-ktx:1.3.0
+androidx.tracing:tracing:1.3.0
androidx.transition:transition:1.4.1
androidx.vectordrawable:vectordrawable-animated:1.2.0
androidx.vectordrawable:vectordrawable:1.2.0
androidx.versionedparcelable:versionedparcelable:1.1.1
androidx.viewpager:viewpager:1.0.0
androidx.window.extensions.core:core:1.0.0
-androidx.window:window:1.2.0
+androidx.window:window-core-android:1.3.0
+androidx.window:window-core:1.3.0
+androidx.window:window:1.3.0
co.touchlab:kermit-android:2.0.6
co.touchlab:kermit-core-android:2.0.6
co.touchlab:kermit-core:2.0.6
@@ -159,7 +170,8 @@ com.attafitamim.krop:ui-android:0.1.6
com.attafitamim.krop:ui:0.1.6
com.caverock:androidsvg-aar:1.4
com.google.accompanist:accompanist-drawablepainter:0.37.3
-com.google.accompanist:accompanist-permissions:0.37.3
+com.google.accompanist:accompanist-pager:0.36.0
+com.google.accompanist:accompanist-permissions:0.36.0
com.google.android.datatransport:transport-api:3.2.0
com.google.android.datatransport:transport-backend-cct:3.3.0
com.google.android.datatransport:transport-runtime:3.3.0
@@ -231,6 +243,7 @@ de.jensklingenberg.ktorfit:ktorfit-lib-light:2.5.2
de.jensklingenberg.ktorfit:ktorfit-lib:2.5.2
dev.chrisbanes.material3:material3-window-size-class-multiplatform-android:0.5.0
dev.chrisbanes.material3:material3-window-size-class-multiplatform:0.5.0
+dev.chrisbanes.snapper:snapper:0.2.2
io.coil-kt.coil3:coil-android:3.2.0
io.coil-kt.coil3:coil-compose-android:3.2.0
io.coil-kt.coil3:coil-compose-core-android:3.2.0
@@ -271,12 +284,14 @@ io.github.panpf.zoomimage:zoomimage-core-android:1.3.0
io.github.panpf.zoomimage:zoomimage-core-coil3-android:1.3.0
io.github.panpf.zoomimage:zoomimage-core-coil3:1.3.0
io.github.panpf.zoomimage:zoomimage-core:1.3.0
-io.github.vinceglb:filekit-core-android:0.10.0
-io.github.vinceglb:filekit-core:0.10.0
-io.github.vinceglb:filekit-dialogs-android:0.10.0
-io.github.vinceglb:filekit-dialogs-compose-android:0.10.0
-io.github.vinceglb:filekit-dialogs-compose:0.10.0
-io.github.vinceglb:filekit-dialogs:0.10.0
+io.github.vinceglb:filekit-compose-android:0.8.8
+io.github.vinceglb:filekit-compose:0.8.8
+io.github.vinceglb:filekit-core-android:0.10.0-beta04
+io.github.vinceglb:filekit-core:0.10.0-beta04
+io.github.vinceglb:filekit-dialogs-android:0.10.0-beta04
+io.github.vinceglb:filekit-dialogs-compose-android:0.10.0-beta04
+io.github.vinceglb:filekit-dialogs-compose:0.10.0-beta04
+io.github.vinceglb:filekit-dialogs:0.10.0-beta04
io.insert-koin:koin-android:4.1.0
io.insert-koin:koin-androidx-compose:4.1.0
io.insert-koin:koin-androidx-navigation:4.1.0
@@ -345,7 +360,8 @@ org.jetbrains.androidx.navigation:navigation-common:2.9.0-beta03
org.jetbrains.androidx.navigation:navigation-compose:2.9.0-beta03
org.jetbrains.androidx.navigation:navigation-runtime:2.9.0-beta03
org.jetbrains.androidx.savedstate:savedstate-compose:1.3.1
-org.jetbrains.androidx.savedstate:savedstate:1.3.3
+org.jetbrains.androidx.savedstate:savedstate:1.3.1
+org.jetbrains.androidx.window:window-core:1.3.1
org.jetbrains.compose.animation:animation-core:1.8.2
org.jetbrains.compose.animation:animation:1.8.2
org.jetbrains.compose.annotation-internal:annotation:1.8.2
@@ -356,6 +372,10 @@ org.jetbrains.compose.components:components-ui-tooling-preview-android:1.8.2
org.jetbrains.compose.components:components-ui-tooling-preview:1.8.2
org.jetbrains.compose.foundation:foundation-layout:1.8.2
org.jetbrains.compose.foundation:foundation:1.8.2
+org.jetbrains.compose.material3.adaptive:adaptive-layout:1.1.2
+org.jetbrains.compose.material3.adaptive:adaptive-navigation:1.1.2
+org.jetbrains.compose.material3.adaptive:adaptive:1.1.2
+org.jetbrains.compose.material3:material3-adaptive-navigation-suite:1.8.2
org.jetbrains.compose.material3:material3:1.8.2
org.jetbrains.compose.material:material-icons-core:1.7.3
org.jetbrains.compose.material:material-icons-extended:1.7.3
@@ -371,12 +391,12 @@ org.jetbrains.compose.ui:ui-text:1.8.2
org.jetbrains.compose.ui:ui-unit:1.8.2
org.jetbrains.compose.ui:ui-util:1.8.2
org.jetbrains.compose.ui:ui:1.8.2
-org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10
-org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10
-org.jetbrains.kotlin:kotlin-reflect:2.1.0
-org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.23
-org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20
-org.jetbrains.kotlin:kotlin-stdlib:2.2.0
+org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.20
+org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.20
+org.jetbrains.kotlin:kotlin-reflect:2.1.20
+org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0
+org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0
+org.jetbrains.kotlin:kotlin-stdlib:2.1.21
org.jetbrains.kotlinx:atomicfu-jvm:0.23.2
org.jetbrains.kotlinx:atomicfu:0.23.2
org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8
@@ -387,19 +407,19 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.2
-org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1-0.6.x-compat
-org.jetbrains.kotlinx:kotlinx-datetime:0.7.1-0.6.x-compat
-org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.8.0
-org.jetbrains.kotlinx:kotlinx-io-bytestring:0.8.0
-org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.8.0
-org.jetbrains.kotlinx:kotlinx-io-core:0.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0
+org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1
+org.jetbrains.kotlinx:kotlinx-datetime:0.7.1
+org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.7.0
+org.jetbrains.kotlinx:kotlinx-io-bytestring:0.7.0
+org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.7.0
+org.jetbrains.kotlinx:kotlinx-io-core:0.7.0
+org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1
org.jetbrains:annotations:23.0.0
org.jspecify:jspecify:1.0.0
org.slf4j:slf4j-api:2.0.16
diff --git a/cmp-android/dependencies/prodDebugRuntimeClasspath.txt b/cmp-android/dependencies/prodDebugRuntimeClasspath.txt
index 97c622612..f9ee3fb08 100644
--- a/cmp-android/dependencies/prodDebugRuntimeClasspath.txt
+++ b/cmp-android/dependencies/prodDebugRuntimeClasspath.txt
@@ -17,61 +17,69 @@ androidx.camera:camera-view:1.4.1
androidx.collection:collection-jvm:1.5.0
androidx.collection:collection-ktx:1.5.0
androidx.collection:collection:1.5.0
-androidx.compose.animation:animation-android:1.8.2
-androidx.compose.animation:animation-core-android:1.8.2
-androidx.compose.animation:animation-core:1.8.2
-androidx.compose.animation:animation:1.8.2
-androidx.compose.foundation:foundation-android:1.8.2
-androidx.compose.foundation:foundation-layout-android:1.8.2
-androidx.compose.foundation:foundation-layout:1.8.2
-androidx.compose.foundation:foundation:1.8.2
+androidx.compose.animation:animation-android:1.8.3
+androidx.compose.animation:animation-core-android:1.8.3
+androidx.compose.animation:animation-core:1.8.3
+androidx.compose.animation:animation:1.8.3
+androidx.compose.foundation:foundation-android:1.8.3
+androidx.compose.foundation:foundation-layout-android:1.8.3
+androidx.compose.foundation:foundation-layout:1.8.3
+androidx.compose.foundation:foundation:1.8.3
+androidx.compose.material3.adaptive:adaptive-android:1.1.0
+androidx.compose.material3.adaptive:adaptive-layout-android:1.1.0
+androidx.compose.material3.adaptive:adaptive-layout:1.1.0
+androidx.compose.material3.adaptive:adaptive-navigation-android:1.1.0
+androidx.compose.material3.adaptive:adaptive-navigation:1.1.0
+androidx.compose.material3.adaptive:adaptive:1.1.0
+androidx.compose.material3:material3-adaptive-navigation-suite-android:1.3.2
+androidx.compose.material3:material3-adaptive-navigation-suite:1.3.2
androidx.compose.material3:material3-android:1.3.2
androidx.compose.material3:material3:1.3.2
-androidx.compose.material:material-android:1.8.2
-androidx.compose.material:material-icons-core-android:1.7.6
-androidx.compose.material:material-icons-core:1.7.6
-androidx.compose.material:material-icons-extended-android:1.7.6
-androidx.compose.material:material-icons-extended:1.7.6
-androidx.compose.material:material-ripple-android:1.8.2
-androidx.compose.material:material-ripple:1.8.2
-androidx.compose.material:material:1.8.2
-androidx.compose.runtime:runtime-android:1.8.2
-androidx.compose.runtime:runtime-saveable-android:1.8.2
-androidx.compose.runtime:runtime-saveable:1.8.2
-androidx.compose.runtime:runtime:1.8.2
-androidx.compose.ui:ui-android:1.8.2
-androidx.compose.ui:ui-geometry-android:1.8.2
-androidx.compose.ui:ui-geometry:1.8.2
-androidx.compose.ui:ui-graphics-android:1.8.2
-androidx.compose.ui:ui-graphics:1.8.2
-androidx.compose.ui:ui-text-android:1.8.2
-androidx.compose.ui:ui-text:1.8.2
-androidx.compose.ui:ui-tooling-android:1.8.2
-androidx.compose.ui:ui-tooling-data-android:1.8.2
-androidx.compose.ui:ui-tooling-data:1.8.2
-androidx.compose.ui:ui-tooling-preview-android:1.8.2
-androidx.compose.ui:ui-tooling-preview:1.8.2
-androidx.compose.ui:ui-tooling:1.8.2
-androidx.compose.ui:ui-unit-android:1.8.2
-androidx.compose.ui:ui-unit:1.8.2
-androidx.compose.ui:ui-util-android:1.8.2
-androidx.compose.ui:ui-util:1.8.2
-androidx.compose.ui:ui:1.8.2
-androidx.compose:compose-bom:2024.12.01
+androidx.compose.material:material-android:1.8.3
+androidx.compose.material:material-icons-core-android:1.7.8
+androidx.compose.material:material-icons-core:1.7.8
+androidx.compose.material:material-icons-extended-android:1.7.8
+androidx.compose.material:material-icons-extended:1.7.8
+androidx.compose.material:material-ripple-android:1.8.3
+androidx.compose.material:material-ripple:1.8.3
+androidx.compose.material:material:1.8.3
+androidx.compose.runtime:runtime-android:1.8.3
+androidx.compose.runtime:runtime-saveable-android:1.8.3
+androidx.compose.runtime:runtime-saveable:1.8.3
+androidx.compose.runtime:runtime:1.8.3
+androidx.compose.ui:ui-android:1.8.3
+androidx.compose.ui:ui-geometry-android:1.8.3
+androidx.compose.ui:ui-geometry:1.8.3
+androidx.compose.ui:ui-graphics-android:1.8.3
+androidx.compose.ui:ui-graphics:1.8.3
+androidx.compose.ui:ui-text-android:1.8.3
+androidx.compose.ui:ui-text:1.8.3
+androidx.compose.ui:ui-tooling-android:1.8.3
+androidx.compose.ui:ui-tooling-data-android:1.8.3
+androidx.compose.ui:ui-tooling-data:1.8.3
+androidx.compose.ui:ui-tooling-preview-android:1.8.3
+androidx.compose.ui:ui-tooling-preview:1.8.3
+androidx.compose.ui:ui-tooling:1.8.3
+androidx.compose.ui:ui-unit-android:1.8.3
+androidx.compose.ui:ui-unit:1.8.3
+androidx.compose.ui:ui-util-android:1.8.3
+androidx.compose.ui:ui-util:1.8.3
+androidx.compose.ui:ui:1.8.3
+androidx.compose:compose-bom:2025.06.01
androidx.concurrent:concurrent-futures-ktx:1.1.0
androidx.concurrent:concurrent-futures:1.1.0
-androidx.core:core-ktx:1.15.0
+androidx.core:core-ktx:1.16.0
androidx.core:core-splashscreen:1.0.1
androidx.core:core-viewtree:1.0.0
-androidx.core:core:1.15.0
+androidx.core:core:1.16.0
androidx.cursoradapter:cursoradapter:1.0.0
androidx.customview:customview-poolingcontainer:1.0.0
androidx.customview:customview:1.1.0
-androidx.databinding:databinding-adapters:8.7.3
-androidx.databinding:databinding-common:8.7.3
-androidx.databinding:databinding-ktx:8.7.3
-androidx.databinding:databinding-runtime:8.7.3
-androidx.databinding:viewbinding:8.7.3
+androidx.databinding:databinding-adapters:8.10.0
+androidx.databinding:databinding-common:8.10.0
+androidx.databinding:databinding-ktx:8.10.0
+androidx.databinding:databinding-runtime:8.10.0
+androidx.databinding:viewbinding:8.10.0
androidx.datastore:datastore-core:1.0.0
androidx.datastore:datastore-preferences-core:1.0.0
androidx.datastore:datastore-preferences:1.0.0
@@ -130,15 +138,18 @@ androidx.savedstate:savedstate-ktx:1.3.1
androidx.savedstate:savedstate:1.3.1
androidx.slidingpanelayout:slidingpanelayout:1.2.0
androidx.startup:startup-runtime:1.2.0
-androidx.tracing:tracing-ktx:1.2.0
-androidx.tracing:tracing:1.2.0
+androidx.tracing:tracing-android:1.3.0
+androidx.tracing:tracing-ktx:1.3.0
+androidx.tracing:tracing:1.3.0
androidx.transition:transition:1.4.1
androidx.vectordrawable:vectordrawable-animated:1.2.0
androidx.vectordrawable:vectordrawable:1.2.0
androidx.versionedparcelable:versionedparcelable:1.1.1
androidx.viewpager:viewpager:1.0.0
androidx.window.extensions.core:core:1.0.0
-androidx.window:window:1.2.0
+androidx.window:window-core-android:1.3.0
+androidx.window:window-core:1.3.0
+androidx.window:window:1.3.0
co.touchlab:kermit-android-debug:2.0.6
co.touchlab:kermit-core-android-debug:2.0.6
co.touchlab:kermit-core:2.0.6
@@ -159,7 +170,8 @@ com.attafitamim.krop:ui-android:0.1.6
com.attafitamim.krop:ui:0.1.6
com.caverock:androidsvg-aar:1.4
com.google.accompanist:accompanist-drawablepainter:0.37.3
-com.google.accompanist:accompanist-permissions:0.37.3
+com.google.accompanist:accompanist-pager:0.36.0
+com.google.accompanist:accompanist-permissions:0.36.0
com.google.android.datatransport:transport-api:3.2.0
com.google.android.datatransport:transport-backend-cct:3.3.0
com.google.android.datatransport:transport-runtime:3.3.0
@@ -231,6 +243,7 @@ de.jensklingenberg.ktorfit:ktorfit-lib-light:2.5.2
de.jensklingenberg.ktorfit:ktorfit-lib:2.5.2
dev.chrisbanes.material3:material3-window-size-class-multiplatform-android:0.5.0
dev.chrisbanes.material3:material3-window-size-class-multiplatform:0.5.0
+dev.chrisbanes.snapper:snapper:0.2.2
io.coil-kt.coil3:coil-android:3.2.0
io.coil-kt.coil3:coil-compose-android:3.2.0
io.coil-kt.coil3:coil-compose-core-android:3.2.0
@@ -271,12 +284,14 @@ io.github.panpf.zoomimage:zoomimage-core-android:1.3.0
io.github.panpf.zoomimage:zoomimage-core-coil3-android:1.3.0
io.github.panpf.zoomimage:zoomimage-core-coil3:1.3.0
io.github.panpf.zoomimage:zoomimage-core:1.3.0
-io.github.vinceglb:filekit-core-android:0.10.0
-io.github.vinceglb:filekit-core:0.10.0
-io.github.vinceglb:filekit-dialogs-android:0.10.0
-io.github.vinceglb:filekit-dialogs-compose-android:0.10.0
-io.github.vinceglb:filekit-dialogs-compose:0.10.0
-io.github.vinceglb:filekit-dialogs:0.10.0
+io.github.vinceglb:filekit-compose-android:0.8.8
+io.github.vinceglb:filekit-compose:0.8.8
+io.github.vinceglb:filekit-core-android:0.10.0-beta04
+io.github.vinceglb:filekit-core:0.10.0-beta04
+io.github.vinceglb:filekit-dialogs-android:0.10.0-beta04
+io.github.vinceglb:filekit-dialogs-compose-android:0.10.0-beta04
+io.github.vinceglb:filekit-dialogs-compose:0.10.0-beta04
+io.github.vinceglb:filekit-dialogs:0.10.0-beta04
io.insert-koin:koin-android:4.1.0
io.insert-koin:koin-androidx-compose:4.1.0
io.insert-koin:koin-androidx-navigation:4.1.0
@@ -345,7 +360,8 @@ org.jetbrains.androidx.navigation:navigation-common:2.9.0-beta03
org.jetbrains.androidx.navigation:navigation-compose:2.9.0-beta03
org.jetbrains.androidx.navigation:navigation-runtime:2.9.0-beta03
org.jetbrains.androidx.savedstate:savedstate-compose:1.3.1
-org.jetbrains.androidx.savedstate:savedstate:1.3.3
+org.jetbrains.androidx.savedstate:savedstate:1.3.1
+org.jetbrains.androidx.window:window-core:1.3.1
org.jetbrains.compose.animation:animation-core:1.8.2
org.jetbrains.compose.animation:animation:1.8.2
org.jetbrains.compose.annotation-internal:annotation:1.8.2
@@ -356,6 +372,10 @@ org.jetbrains.compose.components:components-ui-tooling-preview-android:1.8.2
org.jetbrains.compose.components:components-ui-tooling-preview:1.8.2
org.jetbrains.compose.foundation:foundation-layout:1.8.2
org.jetbrains.compose.foundation:foundation:1.8.2
+org.jetbrains.compose.material3.adaptive:adaptive-layout:1.1.2
+org.jetbrains.compose.material3.adaptive:adaptive-navigation:1.1.2
+org.jetbrains.compose.material3.adaptive:adaptive:1.1.2
+org.jetbrains.compose.material3:material3-adaptive-navigation-suite:1.8.2
org.jetbrains.compose.material3:material3:1.8.2
org.jetbrains.compose.material:material-icons-core:1.7.3
org.jetbrains.compose.material:material-icons-extended:1.7.3
@@ -374,12 +394,12 @@ org.jetbrains.compose.ui:ui-tooling:1.8.2
org.jetbrains.compose.ui:ui-unit:1.8.2
org.jetbrains.compose.ui:ui-util:1.8.2
org.jetbrains.compose.ui:ui:1.8.2
-org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10
-org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10
-org.jetbrains.kotlin:kotlin-reflect:2.1.0
-org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.23
-org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20
-org.jetbrains.kotlin:kotlin-stdlib:2.2.0
+org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.20
+org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.20
+org.jetbrains.kotlin:kotlin-reflect:2.1.20
+org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0
+org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0
+org.jetbrains.kotlin:kotlin-stdlib:2.1.21
org.jetbrains.kotlinx:atomicfu-jvm:0.23.2
org.jetbrains.kotlinx:atomicfu:0.23.2
org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8
@@ -390,19 +410,19 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.2
-org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1-0.6.x-compat
-org.jetbrains.kotlinx:kotlinx-datetime:0.7.1-0.6.x-compat
-org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.8.0
-org.jetbrains.kotlinx:kotlinx-io-bytestring:0.8.0
-org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.8.0
-org.jetbrains.kotlinx:kotlinx-io-core:0.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0
+org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1
+org.jetbrains.kotlinx:kotlinx-datetime:0.7.1
+org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.7.0
+org.jetbrains.kotlinx:kotlinx-io-bytestring:0.7.0
+org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.7.0
+org.jetbrains.kotlinx:kotlinx-io-core:0.7.0
+org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1
org.jetbrains:annotations:23.0.0
org.jspecify:jspecify:1.0.0
org.slf4j:slf4j-api:2.0.16
diff --git a/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt b/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt
index 1266bed3d..836c3e7d8 100644
--- a/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt
+++ b/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt
@@ -17,61 +17,69 @@ androidx.camera:camera-view:1.4.1
androidx.collection:collection-jvm:1.5.0
androidx.collection:collection-ktx:1.5.0
androidx.collection:collection:1.5.0
-androidx.compose.animation:animation-android:1.8.2
-androidx.compose.animation:animation-core-android:1.8.2
-androidx.compose.animation:animation-core:1.8.2
-androidx.compose.animation:animation:1.8.2
-androidx.compose.foundation:foundation-android:1.8.2
-androidx.compose.foundation:foundation-layout-android:1.8.2
-androidx.compose.foundation:foundation-layout:1.8.2
-androidx.compose.foundation:foundation:1.8.2
+androidx.compose.animation:animation-android:1.8.3
+androidx.compose.animation:animation-core-android:1.8.3
+androidx.compose.animation:animation-core:1.8.3
+androidx.compose.animation:animation:1.8.3
+androidx.compose.foundation:foundation-android:1.8.3
+androidx.compose.foundation:foundation-layout-android:1.8.3
+androidx.compose.foundation:foundation-layout:1.8.3
+androidx.compose.foundation:foundation:1.8.3
+androidx.compose.material3.adaptive:adaptive-android:1.1.0
+androidx.compose.material3.adaptive:adaptive-layout-android:1.1.0
+androidx.compose.material3.adaptive:adaptive-layout:1.1.0
+androidx.compose.material3.adaptive:adaptive-navigation-android:1.1.0
+androidx.compose.material3.adaptive:adaptive-navigation:1.1.0
+androidx.compose.material3.adaptive:adaptive:1.1.0
+androidx.compose.material3:material3-adaptive-navigation-suite-android:1.3.2
+androidx.compose.material3:material3-adaptive-navigation-suite:1.3.2
androidx.compose.material3:material3-android:1.3.2
androidx.compose.material3:material3:1.3.2
-androidx.compose.material:material-android:1.8.2
-androidx.compose.material:material-icons-core-android:1.7.6
-androidx.compose.material:material-icons-core:1.7.6
-androidx.compose.material:material-icons-extended-android:1.7.6
-androidx.compose.material:material-icons-extended:1.7.6
-androidx.compose.material:material-ripple-android:1.8.2
-androidx.compose.material:material-ripple:1.8.2
-androidx.compose.material:material:1.8.2
-androidx.compose.runtime:runtime-android:1.8.2
-androidx.compose.runtime:runtime-saveable-android:1.8.2
-androidx.compose.runtime:runtime-saveable:1.8.2
-androidx.compose.runtime:runtime:1.8.2
-androidx.compose.ui:ui-android:1.8.2
-androidx.compose.ui:ui-geometry-android:1.8.2
-androidx.compose.ui:ui-geometry:1.8.2
-androidx.compose.ui:ui-graphics-android:1.8.2
-androidx.compose.ui:ui-graphics:1.8.2
-androidx.compose.ui:ui-text-android:1.8.2
-androidx.compose.ui:ui-text:1.8.2
-androidx.compose.ui:ui-tooling-android:1.8.2
-androidx.compose.ui:ui-tooling-data-android:1.8.2
-androidx.compose.ui:ui-tooling-data:1.8.2
-androidx.compose.ui:ui-tooling-preview-android:1.8.2
-androidx.compose.ui:ui-tooling-preview:1.8.2
-androidx.compose.ui:ui-tooling:1.8.2
-androidx.compose.ui:ui-unit-android:1.8.2
-androidx.compose.ui:ui-unit:1.8.2
-androidx.compose.ui:ui-util-android:1.8.2
-androidx.compose.ui:ui-util:1.8.2
-androidx.compose.ui:ui:1.8.2
-androidx.compose:compose-bom:2024.12.01
+androidx.compose.material:material-android:1.8.3
+androidx.compose.material:material-icons-core-android:1.7.8
+androidx.compose.material:material-icons-core:1.7.8
+androidx.compose.material:material-icons-extended-android:1.7.8
+androidx.compose.material:material-icons-extended:1.7.8
+androidx.compose.material:material-ripple-android:1.8.3
+androidx.compose.material:material-ripple:1.8.3
+androidx.compose.material:material:1.8.3
+androidx.compose.runtime:runtime-android:1.8.3
+androidx.compose.runtime:runtime-saveable-android:1.8.3
+androidx.compose.runtime:runtime-saveable:1.8.3
+androidx.compose.runtime:runtime:1.8.3
+androidx.compose.ui:ui-android:1.8.3
+androidx.compose.ui:ui-geometry-android:1.8.3
+androidx.compose.ui:ui-geometry:1.8.3
+androidx.compose.ui:ui-graphics-android:1.8.3
+androidx.compose.ui:ui-graphics:1.8.3
+androidx.compose.ui:ui-text-android:1.8.3
+androidx.compose.ui:ui-text:1.8.3
+androidx.compose.ui:ui-tooling-android:1.8.3
+androidx.compose.ui:ui-tooling-data-android:1.8.3
+androidx.compose.ui:ui-tooling-data:1.8.3
+androidx.compose.ui:ui-tooling-preview-android:1.8.3
+androidx.compose.ui:ui-tooling-preview:1.8.3
+androidx.compose.ui:ui-tooling:1.8.3
+androidx.compose.ui:ui-unit-android:1.8.3
+androidx.compose.ui:ui-unit:1.8.3
+androidx.compose.ui:ui-util-android:1.8.3
+androidx.compose.ui:ui-util:1.8.3
+androidx.compose.ui:ui:1.8.3
+androidx.compose:compose-bom:2025.06.01
androidx.concurrent:concurrent-futures-ktx:1.1.0
androidx.concurrent:concurrent-futures:1.1.0
-androidx.core:core-ktx:1.15.0
+androidx.core:core-ktx:1.16.0
androidx.core:core-splashscreen:1.0.1
androidx.core:core-viewtree:1.0.0
-androidx.core:core:1.15.0
+androidx.core:core:1.16.0
androidx.cursoradapter:cursoradapter:1.0.0
androidx.customview:customview-poolingcontainer:1.0.0
androidx.customview:customview:1.1.0
-androidx.databinding:databinding-adapters:8.7.3
-androidx.databinding:databinding-common:8.7.3
-androidx.databinding:databinding-ktx:8.7.3
-androidx.databinding:databinding-runtime:8.7.3
-androidx.databinding:viewbinding:8.7.3
+androidx.databinding:databinding-adapters:8.10.0
+androidx.databinding:databinding-common:8.10.0
+androidx.databinding:databinding-ktx:8.10.0
+androidx.databinding:databinding-runtime:8.10.0
+androidx.databinding:viewbinding:8.10.0
androidx.datastore:datastore-core:1.0.0
androidx.datastore:datastore-preferences-core:1.0.0
androidx.datastore:datastore-preferences:1.0.0
@@ -130,15 +138,18 @@ androidx.savedstate:savedstate-ktx:1.3.1
androidx.savedstate:savedstate:1.3.1
androidx.slidingpanelayout:slidingpanelayout:1.2.0
androidx.startup:startup-runtime:1.2.0
-androidx.tracing:tracing-ktx:1.2.0
-androidx.tracing:tracing:1.2.0
+androidx.tracing:tracing-android:1.3.0
+androidx.tracing:tracing-ktx:1.3.0
+androidx.tracing:tracing:1.3.0
androidx.transition:transition:1.4.1
androidx.vectordrawable:vectordrawable-animated:1.2.0
androidx.vectordrawable:vectordrawable:1.2.0
androidx.versionedparcelable:versionedparcelable:1.1.1
androidx.viewpager:viewpager:1.0.0
androidx.window.extensions.core:core:1.0.0
-androidx.window:window:1.2.0
+androidx.window:window-core-android:1.3.0
+androidx.window:window-core:1.3.0
+androidx.window:window:1.3.0
co.touchlab:kermit-android:2.0.6
co.touchlab:kermit-core-android:2.0.6
co.touchlab:kermit-core:2.0.6
@@ -159,7 +170,8 @@ com.attafitamim.krop:ui-android:0.1.6
com.attafitamim.krop:ui:0.1.6
com.caverock:androidsvg-aar:1.4
com.google.accompanist:accompanist-drawablepainter:0.37.3
-com.google.accompanist:accompanist-permissions:0.37.3
+com.google.accompanist:accompanist-pager:0.36.0
+com.google.accompanist:accompanist-permissions:0.36.0
com.google.android.datatransport:transport-api:3.2.0
com.google.android.datatransport:transport-backend-cct:3.3.0
com.google.android.datatransport:transport-runtime:3.3.0
@@ -231,6 +243,7 @@ de.jensklingenberg.ktorfit:ktorfit-lib-light:2.5.2
de.jensklingenberg.ktorfit:ktorfit-lib:2.5.2
dev.chrisbanes.material3:material3-window-size-class-multiplatform-android:0.5.0
dev.chrisbanes.material3:material3-window-size-class-multiplatform:0.5.0
+dev.chrisbanes.snapper:snapper:0.2.2
io.coil-kt.coil3:coil-android:3.2.0
io.coil-kt.coil3:coil-compose-android:3.2.0
io.coil-kt.coil3:coil-compose-core-android:3.2.0
@@ -271,12 +284,14 @@ io.github.panpf.zoomimage:zoomimage-core-android:1.3.0
io.github.panpf.zoomimage:zoomimage-core-coil3-android:1.3.0
io.github.panpf.zoomimage:zoomimage-core-coil3:1.3.0
io.github.panpf.zoomimage:zoomimage-core:1.3.0
-io.github.vinceglb:filekit-core-android:0.10.0
-io.github.vinceglb:filekit-core:0.10.0
-io.github.vinceglb:filekit-dialogs-android:0.10.0
-io.github.vinceglb:filekit-dialogs-compose-android:0.10.0
-io.github.vinceglb:filekit-dialogs-compose:0.10.0
-io.github.vinceglb:filekit-dialogs:0.10.0
+io.github.vinceglb:filekit-compose-android:0.8.8
+io.github.vinceglb:filekit-compose:0.8.8
+io.github.vinceglb:filekit-core-android:0.10.0-beta04
+io.github.vinceglb:filekit-core:0.10.0-beta04
+io.github.vinceglb:filekit-dialogs-android:0.10.0-beta04
+io.github.vinceglb:filekit-dialogs-compose-android:0.10.0-beta04
+io.github.vinceglb:filekit-dialogs-compose:0.10.0-beta04
+io.github.vinceglb:filekit-dialogs:0.10.0-beta04
io.insert-koin:koin-android:4.1.0
io.insert-koin:koin-androidx-compose:4.1.0
io.insert-koin:koin-androidx-navigation:4.1.0
@@ -345,7 +360,8 @@ org.jetbrains.androidx.navigation:navigation-common:2.9.0-beta03
org.jetbrains.androidx.navigation:navigation-compose:2.9.0-beta03
org.jetbrains.androidx.navigation:navigation-runtime:2.9.0-beta03
org.jetbrains.androidx.savedstate:savedstate-compose:1.3.1
-org.jetbrains.androidx.savedstate:savedstate:1.3.3
+org.jetbrains.androidx.savedstate:savedstate:1.3.1
+org.jetbrains.androidx.window:window-core:1.3.1
org.jetbrains.compose.animation:animation-core:1.8.2
org.jetbrains.compose.animation:animation:1.8.2
org.jetbrains.compose.annotation-internal:annotation:1.8.2
@@ -356,6 +372,10 @@ org.jetbrains.compose.components:components-ui-tooling-preview-android:1.8.2
org.jetbrains.compose.components:components-ui-tooling-preview:1.8.2
org.jetbrains.compose.foundation:foundation-layout:1.8.2
org.jetbrains.compose.foundation:foundation:1.8.2
+org.jetbrains.compose.material3.adaptive:adaptive-layout:1.1.2
+org.jetbrains.compose.material3.adaptive:adaptive-navigation:1.1.2
+org.jetbrains.compose.material3.adaptive:adaptive:1.1.2
+org.jetbrains.compose.material3:material3-adaptive-navigation-suite:1.8.2
org.jetbrains.compose.material3:material3:1.8.2
org.jetbrains.compose.material:material-icons-core:1.7.3
org.jetbrains.compose.material:material-icons-extended:1.7.3
@@ -371,12 +391,12 @@ org.jetbrains.compose.ui:ui-text:1.8.2
org.jetbrains.compose.ui:ui-unit:1.8.2
org.jetbrains.compose.ui:ui-util:1.8.2
org.jetbrains.compose.ui:ui:1.8.2
-org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10
-org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10
-org.jetbrains.kotlin:kotlin-reflect:2.1.0
-org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.23
-org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20
-org.jetbrains.kotlin:kotlin-stdlib:2.2.0
+org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.20
+org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.20
+org.jetbrains.kotlin:kotlin-reflect:2.1.20
+org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0
+org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0
+org.jetbrains.kotlin:kotlin-stdlib:2.1.21
org.jetbrains.kotlinx:atomicfu-jvm:0.23.2
org.jetbrains.kotlinx:atomicfu:0.23.2
org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8
@@ -387,19 +407,19 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.2
org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.2
-org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1-0.6.x-compat
-org.jetbrains.kotlinx:kotlinx-datetime:0.7.1-0.6.x-compat
-org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.8.0
-org.jetbrains.kotlinx:kotlinx-io-bytestring:0.8.0
-org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.8.0
-org.jetbrains.kotlinx:kotlinx-io-core:0.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0
-org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0
+org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.7.1
+org.jetbrains.kotlinx:kotlinx-datetime:0.7.1
+org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.7.0
+org.jetbrains.kotlinx:kotlinx-io-bytestring:0.7.0
+org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.7.0
+org.jetbrains.kotlinx:kotlinx-io-core:0.7.0
+org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.1
+org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1
org.jetbrains:annotations:23.0.0
org.jspecify:jspecify:1.0.0
org.slf4j:slf4j-api:2.0.16
diff --git a/cmp-ios/Configuration/Config.xcconfig b/cmp-ios/Configuration/Config.xcconfig
index 17d58e842..ce3c249ae 100644
--- a/cmp-ios/Configuration/Config.xcconfig
+++ b/cmp-ios/Configuration/Config.xcconfig
@@ -1,3 +1,3 @@
TEAM_ID=L432S2FZP5
-BUNDLE_ID=cmp.ios
-APP_NAME=iOSApp
+BUNDLE_ID=org.mifos.mobile
+APP_NAME=Mifos Mobile
diff --git a/cmp-ios/Podfile b/cmp-ios/Podfile
new file mode 100644
index 000000000..0f05686a7
--- /dev/null
+++ b/cmp-ios/Podfile
@@ -0,0 +1,21 @@
+deployment_target = '16.0'
+
+target 'iosApp' do
+ use_frameworks!
+ platform :ios, deployment_target
+ # Pods for iosApp
+ pod 'cmp_shared', :path => '../cmp-shared'
+end
+
+post_install do |installer|
+ installer.generated_projects.each do |project|
+ project.targets.each do |target|
+ target.build_configurations.each do |config|
+ config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = deployment_target
+ end
+ end
+ project.build_configurations.each do |config|
+ config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = deployment_target
+ end
+ end
+end
\ No newline at end of file
diff --git a/cmp-ios/Podfile.lock b/cmp-ios/Podfile.lock
new file mode 100644
index 000000000..220c85428
--- /dev/null
+++ b/cmp-ios/Podfile.lock
@@ -0,0 +1,16 @@
+PODS:
+ - cmp_shared (1.0)
+
+DEPENDENCIES:
+ - cmp_shared (from `../cmp-shared`)
+
+EXTERNAL SOURCES:
+ cmp_shared:
+ :path: "../cmp-shared"
+
+SPEC CHECKSUMS:
+ cmp_shared: bba9ecd776184671d0ea35c27194f0fb83f94797
+
+PODFILE CHECKSUM: fba668dc0eba2e4694ef273d90789cf739b8504c
+
+COCOAPODS: 1.16.2
diff --git a/cmp-ios/iosApp.xcodeproj/project.pbxproj b/cmp-ios/iosApp.xcodeproj/project.pbxproj
index f228b3799..1cbac6655 100644
--- a/cmp-ios/iosApp.xcodeproj/project.pbxproj
+++ b/cmp-ios/iosApp.xcodeproj/project.pbxproj
@@ -9,6 +9,7 @@
/* Begin PBXBuildFile section */
058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557BA273AAA24004C7B11 /* Assets.xcassets */; };
058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */; };
+ 1C3FE2006C77932769810076 /* Pods_iosApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6DF4DB1CF5E68C5614135A56 /* Pods_iosApp.framework */; };
2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2152FB032600AC8F00CF470E /* iOSApp.swift */; };
7555FF83242A565900829871 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7555FF82242A565900829871 /* ContentView.swift */; };
/* End PBXBuildFile section */
@@ -16,10 +17,13 @@
/* Begin PBXFileReference section */
058557BA273AAA24004C7B11 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; };
+ 1EB8E354CA5D35F960D11D5D /* Pods-iosApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iosApp.release.xcconfig"; path = "Target Support Files/Pods-iosApp/Pods-iosApp.release.xcconfig"; sourceTree = ""; };
2152FB032600AC8F00CF470E /* iOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSApp.swift; sourceTree = ""; };
- 7555FF7B242A565900829871 /* iOSApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iOSApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6DF4DB1CF5E68C5614135A56 /* Pods_iosApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_iosApp.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 7555FF7B242A565900829871 /* Mifos Mobile.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Mifos Mobile.app"; sourceTree = BUILT_PRODUCTS_DIR; };
7555FF82242A565900829871 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; };
7555FF8C242A565B00829871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 8DADAFB5E75F5E24CA4F0EB4 /* Pods-iosApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iosApp.debug.xcconfig"; path = "Target Support Files/Pods-iosApp/Pods-iosApp.debug.xcconfig"; sourceTree = ""; };
AB3632DC29227652001CCB65 /* Config.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; };
/* End PBXFileReference section */
@@ -28,6 +32,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 1C3FE2006C77932769810076 /* Pods_iosApp.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -42,9 +47,19 @@
path = "Preview Content";
sourceTree = "";
};
+ 1826950F674A72E12E219090 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 8DADAFB5E75F5E24CA4F0EB4 /* Pods-iosApp.debug.xcconfig */,
+ 1EB8E354CA5D35F960D11D5D /* Pods-iosApp.release.xcconfig */,
+ );
+ path = Pods;
+ sourceTree = "";
+ };
42799AB246E5F90AF97AA0EF /* Frameworks */ = {
isa = PBXGroup;
children = (
+ 6DF4DB1CF5E68C5614135A56 /* Pods_iosApp.framework */,
);
name = Frameworks;
sourceTree = "";
@@ -56,13 +71,14 @@
7555FF7D242A565900829871 /* iosApp */,
7555FF7C242A565900829871 /* Products */,
42799AB246E5F90AF97AA0EF /* Frameworks */,
+ 1826950F674A72E12E219090 /* Pods */,
);
sourceTree = "";
};
7555FF7C242A565900829871 /* Products */ = {
isa = PBXGroup;
children = (
- 7555FF7B242A565900829871 /* iOSApp.app */,
+ 7555FF7B242A565900829871 /* Mifos Mobile.app */,
);
name = Products;
sourceTree = "";
@@ -94,20 +110,19 @@
isa = PBXNativeTarget;
buildConfigurationList = 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */;
buildPhases = (
- F36B1CEB2AD83DDC00CB74D5 /* Compile Kotlin Framework */,
+ D005710AF42AFBD3373CBB90 /* [CP] Check Pods Manifest.lock */,
7555FF77242A565900829871 /* Sources */,
B92378962B6B1156000C7307 /* Frameworks */,
7555FF79242A565900829871 /* Resources */,
+ 3843B476B28208558ACE8C15 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
dependencies = (
);
name = iosApp;
- packageProductDependencies = (
- );
productName = iosApp;
- productReference = 7555FF7B242A565900829871 /* iOSApp.app */;
+ productReference = 7555FF7B242A565900829871 /* Mifos Mobile.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
@@ -135,8 +150,6 @@
Base,
);
mainGroup = 7555FF72242A565900829871;
- packageReferences = (
- );
productRefGroup = 7555FF7C242A565900829871 /* Products */;
projectDirPath = "";
projectRoot = "";
@@ -159,7 +172,24 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
- F36B1CEB2AD83DDC00CB74D5 /* Compile Kotlin Framework */ = {
+ 3843B476B28208558ACE8C15 /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-resources-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Copy Pods Resources";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-resources-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ D005710AF42AFBD3373CBB90 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -167,15 +197,19 @@
inputFileListPaths = (
);
inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
);
- name = "Compile Kotlin Framework";
+ name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-iosApp-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "if [ \"YES\" = \"$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED\" ]; then\n echo \"Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \\\"YES\\\"\"\n exit 0\nfi\ncd \"$SRCROOT/..\"\n./gradlew :cmp-shared:embedAndSignAppleFrameworkForXcode\n";
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
@@ -316,19 +350,20 @@
};
7555FFA6242A565B00829871 /* Debug */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 8DADAFB5E75F5E24CA4F0EB4 /* Pods-iosApp.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\"";
- DEVELOPMENT_TEAM = "${TEAM_ID}";
+ DEVELOPMENT_TEAM = L432S2FZP5;
ENABLE_PREVIEWS = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/../shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)\n$(SRCROOT)/../composeApp/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)",
);
INFOPLIST_FILE = iosApp/Info.plist;
- INFOPLIST_KEY_CFBundleDisplayName = "Mifos Pay";
+ INFOPLIST_KEY_CFBundleDisplayName = "Mifos Mobile";
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.finance";
IPHONEOS_DEPLOYMENT_TARGET = 15.3;
LD_RUNPATH_SEARCH_PATHS = (
@@ -346,6 +381,7 @@
};
7555FFA7242A565B00829871 /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 1EB8E354CA5D35F960D11D5D /* Pods-iosApp.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "Apple Development";
@@ -358,7 +394,7 @@
"$(SRCROOT)/../shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)\n$(SRCROOT)/../composeApp/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)",
);
INFOPLIST_FILE = iosApp/Info.plist;
- INFOPLIST_KEY_CFBundleDisplayName = "Mifos Pay";
+ INFOPLIST_KEY_CFBundleDisplayName = "Mifos Mobile";
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.finance";
IPHONEOS_DEPLOYMENT_TARGET = 15.3;
LD_RUNPATH_SEARCH_PATHS = (
diff --git a/cmp-ios/iosApp.xcodeproj/project.xcworkspace/xcuserdata/hekmatullahamin.xcuserdatad/UserInterfaceState.xcuserstate b/cmp-ios/iosApp.xcodeproj/project.xcworkspace/xcuserdata/hekmatullahamin.xcuserdatad/UserInterfaceState.xcuserstate
index 8331989cb..86c5772eb 100644
Binary files a/cmp-ios/iosApp.xcodeproj/project.xcworkspace/xcuserdata/hekmatullahamin.xcuserdatad/UserInterfaceState.xcuserstate and b/cmp-ios/iosApp.xcodeproj/project.xcworkspace/xcuserdata/hekmatullahamin.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/cmp-ios/iosApp.xcodeproj/project.xcworkspace/xcuserdata/hekmatullahamin.xcuserdatad/xcschemes/xcschememanagement.plist b/cmp-ios/iosApp.xcodeproj/project.xcworkspace/xcuserdata/hekmatullahamin.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 000000000..ee3458dd7
--- /dev/null
+++ b/cmp-ios/iosApp.xcodeproj/project.xcworkspace/xcuserdata/hekmatullahamin.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/cmp-ios/iosApp.xcodeproj/xcshareddata/xcschemes/cmp-ios.xcscheme b/cmp-ios/iosApp.xcodeproj/xcshareddata/xcschemes/cmp-ios.xcscheme
new file mode 100644
index 000000000..ecd5e7fae
--- /dev/null
+++ b/cmp-ios/iosApp.xcodeproj/xcshareddata/xcschemes/cmp-ios.xcscheme
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cmp-ios/iosApp.xcodeproj/xcuserdata/hekmatullahamin.xcuserdatad/xcschemes/xcschememanagement.plist b/cmp-ios/iosApp.xcodeproj/xcuserdata/hekmatullahamin.xcuserdatad/xcschemes/xcschememanagement.plist
index 56b5955f8..aede5d13b 100644
--- a/cmp-ios/iosApp.xcodeproj/xcuserdata/hekmatullahamin.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/cmp-ios/iosApp.xcodeproj/xcuserdata/hekmatullahamin.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -4,7 +4,7 @@
SchemeUserState
- iosApp.xcscheme_^#shared#^_
+ cmp-ios.xcscheme_^#shared#^_
orderHint
0
diff --git a/cmp-ios/iosApp.xcworkspace/contents.xcworkspacedata b/cmp-ios/iosApp.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 000000000..c009e7d7c
--- /dev/null
+++ b/cmp-ios/iosApp.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/cmp-shared/build.gradle.kts b/cmp-shared/build.gradle.kts
index 9ad6f049d..d548fabb5 100644
--- a/cmp-shared/build.gradle.kts
+++ b/cmp-shared/build.gradle.kts
@@ -9,26 +9,15 @@
*/
plugins {
- alias(libs.plugins.kmp.library.convention)
alias(libs.plugins.cmp.feature.convention)
- alias(libs.plugins.android.library)
- alias(libs.plugins.compose.compiler)
- alias(libs.plugins.jetbrainsCompose)
alias(libs.plugins.kotlin.parcelize)
+ alias(libs.plugins.kotlinCocoapods)
}
kotlin {
- listOf(
- iosX64(),
- iosArm64(),
- iosSimulatorArm64()
- ).forEach { iosTarget ->
- iosTarget.binaries.framework {
- baseName = "ComposeApp"
- isStatic = true
- optimized = true
- }
- }
+ iosX64()
+ iosArm64()
+ iosSimulatorArm64()
sourceSets {
commonMain.dependencies {
@@ -40,9 +29,6 @@ kotlin {
//put your multiplatform dependencies here
implementation(compose.material)
implementation(compose.material3)
- api(libs.koin.core)
- implementation(libs.koin.compose)
- implementation(libs.koin.compose.viewmodel)
}
desktopMain.dependencies {
@@ -51,6 +37,19 @@ kotlin {
implementation(compose.desktop.common)
}
}
+
+ cocoapods {
+ summary = "KMP Shared Module"
+ homepage = "https://github.com/openMF/mifos-mobile"
+ version = "1.0"
+ ios.deploymentTarget = "16.0"
+ podfile = project.file("../cmp-ios/Podfile")
+
+ framework {
+ baseName = "ComposeApp"
+ isStatic = true
+ }
+ }
}
android {
diff --git a/cmp-shared/cmp_shared.podspec b/cmp-shared/cmp_shared.podspec
new file mode 100644
index 000000000..7094d449a
--- /dev/null
+++ b/cmp-shared/cmp_shared.podspec
@@ -0,0 +1,54 @@
+Pod::Spec.new do |spec|
+ spec.name = 'cmp_shared'
+ spec.version = '1.0'
+ spec.homepage = 'https://github.com/openMF/mifos-mobile'
+ spec.source = { :http=> ''}
+ spec.authors = ''
+ spec.license = ''
+ spec.summary = 'KMP Shared Module'
+ spec.vendored_frameworks = 'build/cocoapods/framework/ComposeApp.framework'
+ spec.libraries = 'c++'
+ spec.ios.deployment_target = '16.0'
+
+
+ if !Dir.exist?('build/cocoapods/framework/ComposeApp.framework') || Dir.empty?('build/cocoapods/framework/ComposeApp.framework')
+ raise "
+
+ Kotlin framework 'ComposeApp' doesn't exist yet, so a proper Xcode project can't be generated.
+ 'pod install' should be executed after running ':generateDummyFramework' Gradle task:
+
+ ./gradlew :cmp-shared:generateDummyFramework
+
+ Alternatively, proper pod installation is performed during Gradle sync in the IDE (if Podfile location is set)"
+ end
+
+ spec.xcconfig = {
+ 'ENABLE_USER_SCRIPT_SANDBOXING' => 'NO',
+ }
+
+ spec.pod_target_xcconfig = {
+ 'KOTLIN_PROJECT_PATH' => ':cmp-shared',
+ 'PRODUCT_MODULE_NAME' => 'ComposeApp',
+ }
+
+ spec.script_phases = [
+ {
+ :name => 'Build cmp_shared',
+ :execution_position => :before_compile,
+ :shell_path => '/bin/sh',
+ :script => <<-SCRIPT
+ if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then
+ echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\""
+ exit 0
+ fi
+ set -ev
+ REPO_ROOT="$PODS_TARGET_SRCROOT"
+ "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \
+ -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \
+ -Pkotlin.native.cocoapods.archs="$ARCHS" \
+ -Pkotlin.native.cocoapods.configuration="$CONFIGURATION"
+ SCRIPT
+ }
+ ]
+ spec.resources = ['build/compose/cocoapods/compose-resources']
+end
\ No newline at end of file
diff --git a/cmp-shared/src/nativeMain/kotlin/org/mifos/shared/ViewController.kt b/cmp-shared/src/nativeMain/kotlin/org/mifos/shared/ViewController.kt
index b109c261c..bcca05304 100644
--- a/cmp-shared/src/nativeMain/kotlin/org/mifos/shared/ViewController.kt
+++ b/cmp-shared/src/nativeMain/kotlin/org/mifos/shared/ViewController.kt
@@ -18,5 +18,9 @@ fun viewController() = ComposeUIViewController(
initKoin()
},
) {
- SharedApp()
+ SharedApp(
+ handleThemeMode = {},
+ handleAppLocale = {},
+ onSplashScreenRemoved = {},
+ )
}
diff --git a/core-base/analytics/src/commonMain/kotlin/template/core/base/analytics/AnalyticsExtensions.kt b/core-base/analytics/src/commonMain/kotlin/template/core/base/analytics/AnalyticsExtensions.kt
index 60e7e385a..848f7c7b1 100644
--- a/core-base/analytics/src/commonMain/kotlin/template/core/base/analytics/AnalyticsExtensions.kt
+++ b/core-base/analytics/src/commonMain/kotlin/template/core/base/analytics/AnalyticsExtensions.kt
@@ -9,7 +9,7 @@
*/
package template.core.base.analytics
-import kotlin.time.Clock
+import kotlinx.datetime.Clock
import kotlin.time.Duration
import kotlin.time.DurationUnit
diff --git a/core-base/analytics/src/commonMain/kotlin/template/core/base/analytics/PerformanceTracker.kt b/core-base/analytics/src/commonMain/kotlin/template/core/base/analytics/PerformanceTracker.kt
index b93ba5b9b..d8fa77fa8 100644
--- a/core-base/analytics/src/commonMain/kotlin/template/core/base/analytics/PerformanceTracker.kt
+++ b/core-base/analytics/src/commonMain/kotlin/template/core/base/analytics/PerformanceTracker.kt
@@ -9,7 +9,7 @@
*/
package template.core.base.analytics
-import kotlin.time.Clock
+import kotlinx.datetime.Clock
/** Performance tracking utilities for analytics */
diff --git a/core-base/datastore/src/commonTest/kotlin/template/core/base/datastore/DataStoreComprehensiveFeatureTest.kt b/core-base/datastore/src/commonTest/kotlin/template/core/base/datastore/DataStoreComprehensiveFeatureTest.kt
index cb83c58a2..6c8400cee 100644
--- a/core-base/datastore/src/commonTest/kotlin/template/core/base/datastore/DataStoreComprehensiveFeatureTest.kt
+++ b/core-base/datastore/src/commonTest/kotlin/template/core/base/datastore/DataStoreComprehensiveFeatureTest.kt
@@ -18,7 +18,6 @@ import kotlinx.coroutines.flow.first
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.runTest
-import kotlinx.datetime.Clock.System
import kotlinx.serialization.Serializable
import org.koin.core.context.startKoin
import org.koin.core.context.stopKoin
@@ -45,6 +44,8 @@ import kotlin.test.assertEquals
import kotlin.test.assertFalse
import kotlin.test.assertNull
import kotlin.test.assertTrue
+import kotlin.time.Clock
+import kotlin.time.ExperimentalTime
import kotlin.time.measureTime
/**
@@ -631,6 +632,7 @@ class DataStoreComprehensiveFeatureTest : KoinTest {
* Test 9: Complete Integration Scenario
* Tests realistic app usage patterns
*/
+ @OptIn(ExperimentalTime::class)
@Test
fun test09_CompleteIntegrationScenario() = runTest(testDispatcher) {
println("=== Testing Complete Integration Scenario ===")
@@ -668,7 +670,7 @@ class DataStoreComprehensiveFeatureTest : KoinTest {
// 3. Session preferences
repository.savePreference("session_id", "sess_abc123")
- repository.savePreference("login_timestamp", System.now().toEpochMilliseconds())
+ repository.savePreference("login_timestamp", Clock.System.now().toEpochMilliseconds())
repository.savePreference("device_id", "device_xyz789")
// 4. Feature flags and settings
diff --git a/core/common/build.gradle.kts b/core/common/build.gradle.kts
index ffff73a0e..1a904db94 100644
--- a/core/common/build.gradle.kts
+++ b/core/common/build.gradle.kts
@@ -9,6 +9,8 @@
*/
plugins {
alias(libs.plugins.kmp.library.convention)
+ alias(libs.plugins.compose.compiler)
+ alias(libs.plugins.jetbrainsCompose)
}
android {
@@ -39,6 +41,7 @@ kotlin {
api(libs.squareup.okio)
api(libs.jb.kotlin.stdlib)
api(libs.kotlinx.datetime)
+ implementation(libs.jb.composeRuntime)
}
androidMain.dependencies {
diff --git a/core/common/src/commonMain/kotlin/org/mifos/mobile/core/common/DateHelper.kt b/core/common/src/commonMain/kotlin/org/mifos/mobile/core/common/DateHelper.kt
index d04df5a18..3ea6fa96f 100644
--- a/core/common/src/commonMain/kotlin/org/mifos/mobile/core/common/DateHelper.kt
+++ b/core/common/src/commonMain/kotlin/org/mifos/mobile/core/common/DateHelper.kt
@@ -25,7 +25,6 @@ import kotlinx.datetime.isoDayNumber
import kotlinx.datetime.minus
import kotlinx.datetime.toLocalDateTime
import kotlin.time.Duration.Companion.days
-import kotlin.time.ExperimentalTime
@Suppress("TooManyFunctions")
@OptIn(FormatStringsInDatetimeFormats::class)
@@ -163,7 +162,6 @@ object DateHelper {
private val monthNumberToAbbreviation = monthMap.entries.associate { (k, v) -> v to k }
- @OptIn(ExperimentalTime::class)
fun getDateAsLongFromList(integersOfDate: List?): Long? {
if (integersOfDate == null) return null
val dateStr = getDateAsString(integersOfDate)
diff --git a/core/designsystem/build.gradle.kts b/core/designsystem/build.gradle.kts
index 12ff303e2..8b2508841 100644
--- a/core/designsystem/build.gradle.kts
+++ b/core/designsystem/build.gradle.kts
@@ -48,6 +48,7 @@ kotlin {
implementation(libs.fluentui.system.icons)
api(libs.back.handler)
api(libs.window.size)
+ api(projects.coreBase.designsystem)
}
nativeMain.dependencies {
diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts
index aa72f039a..bc8c1d2f3 100644
--- a/core/ui/build.gradle.kts
+++ b/core/ui/build.gradle.kts
@@ -33,6 +33,7 @@ kotlin{
api(projects.core.designsystem)
implementation(projects.core.model)
api(libs.kotlinx.datetime)
+ implementation(libs.jb.lifecycle.compose)
implementation(libs.jb.composeViewmodel)
implementation(libs.jb.lifecycleViewmodel)
implementation(libs.jb.lifecycleViewmodelSavedState)
diff --git a/core/ui/src/commonMain/kotlin/org/mifos/mobile/core/ui/utils/PresentOrFutureSelectableDates.kt b/core/ui/src/commonMain/kotlin/org/mifos/mobile/core/ui/utils/PresentOrFutureSelectableDates.kt
index 5489dcaf9..1bb49c555 100644
--- a/core/ui/src/commonMain/kotlin/org/mifos/mobile/core/ui/utils/PresentOrFutureSelectableDates.kt
+++ b/core/ui/src/commonMain/kotlin/org/mifos/mobile/core/ui/utils/PresentOrFutureSelectableDates.kt
@@ -11,11 +11,12 @@ package org.mifos.mobile.core.ui.utils
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.SelectableDates
-import kotlinx.datetime.Clock
import kotlinx.datetime.TimeZone
import kotlinx.datetime.toLocalDateTime
+import kotlin.time.Clock
+import kotlin.time.ExperimentalTime
-@OptIn(ExperimentalMaterial3Api::class)
+@OptIn(ExperimentalMaterial3Api::class, ExperimentalTime::class)
object PresentOrFutureSelectableDates : SelectableDates {
@ExperimentalMaterial3Api
diff --git a/feature/accounts/src/commonMain/kotlin/org/mifos/mobile/feature/accounts/accountTransactions/TransactionViewModel.kt b/feature/accounts/src/commonMain/kotlin/org/mifos/mobile/feature/accounts/accountTransactions/TransactionViewModel.kt
index 9bdbc1f14..ad1fe95c8 100644
--- a/feature/accounts/src/commonMain/kotlin/org/mifos/mobile/feature/accounts/accountTransactions/TransactionViewModel.kt
+++ b/feature/accounts/src/commonMain/kotlin/org/mifos/mobile/feature/accounts/accountTransactions/TransactionViewModel.kt
@@ -17,7 +17,6 @@ import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
-import kotlinx.datetime.Clock
import kotlinx.datetime.DateTimeUnit
import kotlinx.datetime.LocalDate
import kotlinx.datetime.TimeZone
@@ -55,6 +54,8 @@ import org.mifos.mobile.feature.accounts.model.TransactionCheckboxStatus
import org.mifos.mobile.feature.accounts.model.TransactionFilterType
import org.mifos.mobile.feature.accounts.utils.StatusUtils
import kotlin.collections.map
+import kotlin.time.Clock
+import kotlin.time.ExperimentalTime
/**
* ViewModel for managing the state and logic of the account transactions screen.
@@ -527,6 +528,7 @@ internal class AccountsTransactionViewModel(
* @param selectedFilters A list of [TransactionCheckboxStatus] representing the active checkbox filters.
* @return A map of filtered transactions grouped by date.
*/
+ @OptIn(ExperimentalTime::class)
internal fun applyTransactionFilters(
selectedFilters: List,
): Map> {
diff --git a/feature/accounts/src/commonMain/kotlin/org/mifos/mobile/feature/accounts/accounts/AccountsViewModel.kt b/feature/accounts/src/commonMain/kotlin/org/mifos/mobile/feature/accounts/accounts/AccountsViewModel.kt
index a9b78f259..1415ee353 100644
--- a/feature/accounts/src/commonMain/kotlin/org/mifos/mobile/feature/accounts/accounts/AccountsViewModel.kt
+++ b/feature/accounts/src/commonMain/kotlin/org/mifos/mobile/feature/accounts/accounts/AccountsViewModel.kt
@@ -12,7 +12,6 @@ package org.mifos.mobile.feature.accounts.accounts
import androidx.lifecycle.SavedStateHandle
import androidx.navigation.toRoute
import kotlinx.coroutines.flow.update
-import kotlinx.datetime.Clock
import org.jetbrains.compose.resources.StringResource
import org.mifos.mobile.core.common.Constants
import org.mifos.mobile.core.model.enums.AccountType
@@ -21,6 +20,8 @@ import org.mifos.mobile.core.ui.utils.ScreenUiState
import org.mifos.mobile.feature.accounts.model.CheckboxStatus
import org.mifos.mobile.feature.accounts.model.FilterType
import org.mifos.mobile.feature.accounts.utils.StatusUtils
+import kotlin.time.Clock
+import kotlin.time.ExperimentalTime
/**
* ViewModel responsible for managing the account screen state,
@@ -41,6 +42,7 @@ internal class AccountsViewModel(
observeAccountTypeAndInitCheckboxes()
}
+ @OptIn(ExperimentalTime::class)
override fun handleAction(action: AccountsAction) {
when (action) {
is AccountsAction.SetCheckboxFilterList -> {
@@ -113,6 +115,7 @@ internal class AccountsViewModel(
* Applies the selected checkboxes as filters, sets refresh signal,
* and dismisses the filter dialog.
*/
+ @OptIn(ExperimentalTime::class)
private fun handleConfirmFilterDialog() {
val selectedFilters = state.checkboxOptions.filter { it.isChecked }
@@ -203,7 +206,9 @@ internal class AccountsViewModel(
* UI state for the Accounts screen, containing filter options, dialog visibility,
* current account type, and refresh signals.
*/
-internal data class AccountsState(
+internal data class AccountsState
+@OptIn(ExperimentalTime::class)
+constructor(
val isRefreshing: Boolean = false,
/** Current filter checkboxes shown in the dialog */
diff --git a/feature/auth/src/commonMain/kotlin/org/mifos/mobile/feature/auth/uploadId/UploadIdScreen.kt b/feature/auth/src/commonMain/kotlin/org/mifos/mobile/feature/auth/uploadId/UploadIdScreen.kt
index 8355efdf6..e6877a913 100644
--- a/feature/auth/src/commonMain/kotlin/org/mifos/mobile/feature/auth/uploadId/UploadIdScreen.kt
+++ b/feature/auth/src/commonMain/kotlin/org/mifos/mobile/feature/auth/uploadId/UploadIdScreen.kt
@@ -45,7 +45,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType
import androidx.lifecycle.compose.collectAsStateWithLifecycle
-import kotlinx.datetime.Clock
import mifos_mobile.feature.auth.generated.resources.Res
import mifos_mobile.feature.auth.generated.resources.feature_common_submit
import mifos_mobile.feature.auth.generated.resources.feature_upload_id_cancel
@@ -75,6 +74,8 @@ import org.mifos.mobile.core.designsystem.theme.MifosMobileTheme
import org.mifos.mobile.core.designsystem.theme.MifosTypography
import org.mifos.mobile.core.ui.component.MifosPoweredCard
import org.mifos.mobile.core.ui.utils.EventsEffect
+import kotlin.time.Clock
+import kotlin.time.ExperimentalTime
@Composable
internal fun UploadIdScreen(
@@ -179,7 +180,7 @@ internal fun UploadIdScreenContent(
}
}
-@OptIn(ExperimentalMaterial3Api::class)
+@OptIn(ExperimentalMaterial3Api::class, ExperimentalTime::class)
@Composable
internal fun InputForm(
state: UploadIdUiState,
diff --git a/feature/loan-account/src/commonMain/kotlin/org/mifos/mobile/feature/loanaccount/component/RepaymentPeriodCard.kt b/feature/loan-account/src/commonMain/kotlin/org/mifos/mobile/feature/loanaccount/component/RepaymentPeriodCard.kt
index 72e426e88..ef9e2f5c7 100644
--- a/feature/loan-account/src/commonMain/kotlin/org/mifos/mobile/feature/loanaccount/component/RepaymentPeriodCard.kt
+++ b/feature/loan-account/src/commonMain/kotlin/org/mifos/mobile/feature/loanaccount/component/RepaymentPeriodCard.kt
@@ -31,7 +31,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
-import kotlinx.datetime.Clock
import mifos_mobile.feature.loan_account.generated.resources.Res
import mifos_mobile.feature.loan_account.generated.resources.feature_loan_due
import mifos_mobile.feature.loan_account.generated.resources.feature_loan_installment_number
@@ -47,7 +46,10 @@ import org.mifos.mobile.core.designsystem.theme.AppColors
import org.mifos.mobile.core.designsystem.theme.DesignToken
import org.mifos.mobile.core.designsystem.theme.MifosTypography
import org.mifos.mobile.core.model.entity.accounts.loan.Periods
+import kotlin.time.Clock
+import kotlin.time.ExperimentalTime
+@OptIn(ExperimentalTime::class)
@Composable
fun RepaymentScheduleItem(
period: Periods,
diff --git a/feature/loan-application/src/commonMain/kotlin/org/mifos/mobile/feature/loan/application/loanApplication/LoanApplyScreen.kt b/feature/loan-application/src/commonMain/kotlin/org/mifos/mobile/feature/loan/application/loanApplication/LoanApplyScreen.kt
index 48b090ef7..17f5ab6f8 100644
--- a/feature/loan-application/src/commonMain/kotlin/org/mifos/mobile/feature/loan/application/loanApplication/LoanApplyScreen.kt
+++ b/feature/loan-application/src/commonMain/kotlin/org/mifos/mobile/feature/loan/application/loanApplication/LoanApplyScreen.kt
@@ -36,7 +36,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType
import androidx.lifecycle.compose.collectAsStateWithLifecycle
-import kotlinx.datetime.Clock
import mifos_mobile.feature.loan_application.generated.resources.Res
import mifos_mobile.feature.loan_application.generated.resources.feature_apply_loan_button_cancel
import mifos_mobile.feature.loan_application.generated.resources.feature_apply_loan_button_continue
@@ -65,6 +64,8 @@ import org.mifos.mobile.core.ui.component.MifosPoweredCard
import org.mifos.mobile.core.ui.component.MifosProgressIndicator
import org.mifos.mobile.core.ui.utils.EventsEffect
import org.mifos.mobile.core.ui.utils.ScreenUiState
+import kotlin.time.Clock
+import kotlin.time.ExperimentalTime
@Composable
internal fun LoanApplyScreen(
@@ -136,7 +137,7 @@ internal fun LoanAccountDialog(
}
}
-@OptIn(ExperimentalMaterial3Api::class)
+@OptIn(ExperimentalMaterial3Api::class, ExperimentalTime::class)
@Composable
internal fun LoanAccountContent(
state: LoanApplicationState,
diff --git a/feature/loan-application/src/commonMain/kotlin/org/mifos/mobile/feature/loan/application/loanApplication/LoanApplyViewModel.kt b/feature/loan-application/src/commonMain/kotlin/org/mifos/mobile/feature/loan/application/loanApplication/LoanApplyViewModel.kt
index b1ca5d190..c818040c4 100644
--- a/feature/loan-application/src/commonMain/kotlin/org/mifos/mobile/feature/loan/application/loanApplication/LoanApplyViewModel.kt
+++ b/feature/loan-application/src/commonMain/kotlin/org/mifos/mobile/feature/loan/application/loanApplication/LoanApplyViewModel.kt
@@ -20,7 +20,6 @@ import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
-import kotlinx.datetime.Clock
import mifos_mobile.feature.loan_application.generated.resources.Res
import mifos_mobile.feature.loan_application.generated.resources.feature_apply_loan_error_amount_too_large
import mifos_mobile.feature.loan_application.generated.resources.feature_apply_loan_error_amount_too_small
@@ -48,6 +47,8 @@ import org.mifos.mobile.core.ui.utils.AmountValidationResult
import org.mifos.mobile.core.ui.utils.BaseViewModel
import org.mifos.mobile.core.ui.utils.ScreenUiState
import org.mifos.mobile.core.ui.utils.ValidationHelper
+import kotlin.time.Clock
+import kotlin.time.ExperimentalTime
import org.mifos.mobile.core.model.entity.Currency as ModelCurrency
/**
@@ -675,6 +676,7 @@ internal data class LoanApplicationState(
/**
* The current time in milliseconds, used for date pickers.
*/
+ @OptIn(ExperimentalTime::class)
val currentDate: Long
get() = Clock.System.now().toEpochMilliseconds()
@@ -714,6 +716,7 @@ internal data class LoanApplicationState(
* The effective submission date, which is the later of today's date or the
* client's activation date.
*/
+ @OptIn(ExperimentalTime::class)
val submittedOnDate: String
get() {
val todayMillis = Clock.System.now().toEpochMilliseconds()
diff --git a/feature/savings-application/src/commonMain/kotlin/org/mifos/mobile/feature/savings/application/fillApplication/FillApplicationViewModel.kt b/feature/savings-application/src/commonMain/kotlin/org/mifos/mobile/feature/savings/application/fillApplication/FillApplicationViewModel.kt
index c4db091da..bb3e15ad4 100644
--- a/feature/savings-application/src/commonMain/kotlin/org/mifos/mobile/feature/savings/application/fillApplication/FillApplicationViewModel.kt
+++ b/feature/savings-application/src/commonMain/kotlin/org/mifos/mobile/feature/savings/application/fillApplication/FillApplicationViewModel.kt
@@ -18,7 +18,6 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
-import kotlinx.datetime.Clock
import kotlinx.io.IOException
import mifos_mobile.feature.savings_application.generated.resources.Res
import mifos_mobile.feature.savings_application.generated.resources.feature_apply_savings_error_amount_too_large
@@ -56,6 +55,8 @@ import org.mifos.mobile.core.ui.utils.ScreenUiState
import org.mifos.mobile.core.ui.utils.ValidationHelper
import org.mifos.mobile.core.ui.utils.observe
import kotlin.String
+import kotlin.time.Clock
+import kotlin.time.ExperimentalTime
import org.mifos.mobile.core.model.entity.Currency as ModelCurrency
private const val DEFAULT_DECIMAL_PLACES = 2
@@ -723,6 +724,7 @@ internal data class SavingsApplicationState(
/**
* The current date as a formatted string.
*/
+ @OptIn(ExperimentalTime::class)
val currentDate: String
get() = DateHelper.getDateMonthYearString(Clock.System.now().toEpochMilliseconds())
diff --git a/feature/savings-application/src/commonMain/kotlin/org/mifos/mobile/feature/savings/application/savingsApplication/SavingsApplyViewModel.kt b/feature/savings-application/src/commonMain/kotlin/org/mifos/mobile/feature/savings/application/savingsApplication/SavingsApplyViewModel.kt
index df0f4a66d..5488b0394 100644
--- a/feature/savings-application/src/commonMain/kotlin/org/mifos/mobile/feature/savings/application/savingsApplication/SavingsApplyViewModel.kt
+++ b/feature/savings-application/src/commonMain/kotlin/org/mifos/mobile/feature/savings/application/savingsApplication/SavingsApplyViewModel.kt
@@ -18,7 +18,6 @@ import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
-import kotlinx.datetime.Clock
import kotlinx.io.IOException
import mifos_mobile.feature.savings_application.generated.resources.Res
import mifos_mobile.feature.savings_application.generated.resources.feature_apply_savings_error_product_empty
@@ -38,6 +37,8 @@ import org.mifos.mobile.core.model.entity.templates.savings.SavingsAccountTempla
import org.mifos.mobile.core.model.entity.templates.savings.SavingsProduct
import org.mifos.mobile.core.ui.utils.BaseViewModel
import org.mifos.mobile.core.ui.utils.ScreenUiState
+import kotlin.time.Clock
+import kotlin.time.ExperimentalTime
/**
* A `ViewModel` for the savings application screen, responsible for handling user input,
@@ -588,6 +589,7 @@ internal data class SavingsApplicationState(
id to name
}
+ @OptIn(ExperimentalTime::class)
val submittedOnDate: String
get() {
val todayMillis = Clock.System.now().toEpochMilliseconds()
diff --git a/feature/share-application/src/commonMain/kotlin/org/mifos/mobile/feature/share/application/fillApplication/FillApplicationViewModel.kt b/feature/share-application/src/commonMain/kotlin/org/mifos/mobile/feature/share/application/fillApplication/FillApplicationViewModel.kt
index 3edcf75fa..ed8970c09 100644
--- a/feature/share-application/src/commonMain/kotlin/org/mifos/mobile/feature/share/application/fillApplication/FillApplicationViewModel.kt
+++ b/feature/share-application/src/commonMain/kotlin/org/mifos/mobile/feature/share/application/fillApplication/FillApplicationViewModel.kt
@@ -19,7 +19,6 @@ import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
-import kotlinx.datetime.Clock
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.InternalSerializationApi
import mifos_mobile.feature.share_application.generated.resources.Res
@@ -62,6 +61,8 @@ import org.mifos.mobile.core.ui.utils.ResultNavigator
import org.mifos.mobile.core.ui.utils.ValidationHelper
import org.mifos.mobile.core.ui.utils.observe
import kotlin.String
+import kotlin.time.Clock
+import kotlin.time.ExperimentalTime
import org.mifos.mobile.core.model.entity.Currency as ModelCurrency
private const val DEFAULT_DECIMAL_PLACES = 2
@@ -818,6 +819,7 @@ internal data class ShareApplicationState(
/**
* The current date formatted as a string.
*/
+ @OptIn(ExperimentalTime::class)
val currentDate: String
get() = DateHelper.getDateMonthYearString(Clock.System.now().toEpochMilliseconds())
diff --git a/feature/share-application/src/commonMain/kotlin/org/mifos/mobile/feature/share/application/shareApplication/ShareApplyViewModel.kt b/feature/share-application/src/commonMain/kotlin/org/mifos/mobile/feature/share/application/shareApplication/ShareApplyViewModel.kt
index a721d1813..d9064b12c 100644
--- a/feature/share-application/src/commonMain/kotlin/org/mifos/mobile/feature/share/application/shareApplication/ShareApplyViewModel.kt
+++ b/feature/share-application/src/commonMain/kotlin/org/mifos/mobile/feature/share/application/shareApplication/ShareApplyViewModel.kt
@@ -16,7 +16,6 @@ import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
-import kotlinx.datetime.Clock
import kotlinx.io.IOException
import mifos_mobile.feature.share_application.generated.resources.Res
import mifos_mobile.feature.share_application.generated.resources.feature_apply_share_error_server
@@ -34,6 +33,8 @@ import org.mifos.mobile.core.model.entity.client.Client
import org.mifos.mobile.core.model.entity.templates.savings.SavingsAccountTemplate
import org.mifos.mobile.core.model.entity.templates.shares.ShareProduct
import org.mifos.mobile.core.ui.utils.BaseViewModel
+import kotlin.time.Clock
+import kotlin.time.ExperimentalTime
/**
* `ViewModel` for the savings application screen, responsible for handling user input,
@@ -398,6 +399,7 @@ internal data class ShareApplicationState(
}
.toMap()
+ @OptIn(ExperimentalTime::class)
val submittedOnDate: String
get() {
val todayMillis = Clock.System.now().toEpochMilliseconds()
diff --git a/gradle.properties b/gradle.properties
index 78a3d9e35..f207670f8 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -47,4 +47,6 @@ kotlin.code.style=official
android.defaults.buildfeatures.resvalues=false
android.defaults.buildfeatures.shaders=false
org.jetbrains.compose.experimental.jscanvas.enabled=true
-kotlin.native.ignoreDisabledTargets=true
\ No newline at end of file
+kotlin.native.ignoreDisabledTargets=true
+
+org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 4d5c3e3ab..a236c91ab 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,29 +1,29 @@
[versions]
-accompanistVersion = "0.37.3"
+accompanistVersion = "0.36.0"
activityVersion = "1.9.3"
-androidDesugarJdkLibs = "2.1.4"
-androidGradlePlugin = "8.7.3"
-androidTools = "31.7.3"
+androidDesugarJdkLibs = "2.1.5"
+androidGradlePlugin = "8.10.0"
+androidTools = "31.10.0"
androidx-test-ext-junit = "1.2.1"
-androidxActivity = "1.9.3"
-androidxComposeBom = "2024.12.01"
+androidxActivity = "1.10.1"
+androidxComposeBom = "2025.06.01"
androidxComposeCompiler = "1.5.15"
androidxCoreSplashscreen = "1.0.1"
androidxEspresso = "3.6.1"
-androidxLifecycle = "2.8.7"
+androidxLifecycle = "2.9.2"
androidxMetrics = "1.0.0-beta01"
-androidxNavigation = "2.8.5"
+androidxNavigation = "2.9.2"
androidxProfileinstaller = "1.4.1"
androidxTestRules = "1.6.1"
-androidxTracing = "1.2.0"
-appcompatVersion = "1.7.0"
+androidxTracing = "1.3.0"
+appcompatVersion = "1.7.1"
androidxBrowser = "1.8.0"
mlkit="17.3.0"
guavaVersion = "33.3.1-android"
cameraxVersion = "1.4.1"
-coreKtx = "1.15.0"
+coreKtx = "1.16.0"
dependencyGuard = "0.5.0"
-detekt = "1.23.7"
+detekt = "1.23.8"
easycropVersion = "0.1.1"
firebaseBom = "33.7.0"
firebaseCrashlyticsPlugin = "3.0.2"
@@ -37,7 +37,7 @@ ktlint = "12.1.1"
libphonenumberAndroidVersion = "8.13.35"
lifecycleExtensionsVersion = "2.2.0"
lifecycleLivedataKtxVersion = "2.8.7"
-lifecycleVersion = "2.8.7"
+lifecycleVersion = "2.9.2"
material3 = "1.3.1"
mockitoCoreVersion = "5.6.0"
multidexVersion = "2.0.1"
@@ -57,12 +57,12 @@ lottie = "6.6.7"
compottie = "2.0.0-rc05"
# Kotlin KMP Dependencies
-kotlin = "2.1.0"
+kotlin = "2.1.20"
kotlinInject = "0.7.2"
kotlinxCoroutines = "1.10.1"
-kotlinxDatetime = "0.7.1-0.6.x-compat"
+kotlinxDatetime = "0.6.2"
kotlinxImmutable = "0.3.8"
-kotlinxSerializationJson = "1.7.3"
+kotlinxSerializationJson = "1.8.1"
ksp = "2.1.20-2.0.1"
# Ktor & Ktorfit
@@ -81,20 +81,22 @@ backHandlerVersion = "2.5.0"
multiplatformSettings = "1.3.0"
mokoPermission = "0.19.1"
qroseVersion = "1.0.1"
-okioVersion = "3.15.0"
+
+okioVersion = "3.9.1"
kermit = "2.0.6"
fileKit = "0.10.0-beta04"
-fileKitDialog = "0.10.0"
+fileKitCompose = "0.8.8"
wire = "5.0.0"
zoomImage = "1.3.0"
uiBackhandler = "1.8.2"
# Jetbrains CMP
windowsSizeClass = "0.5.0"
+composeJB = "1.8.2"
composeLifecycle = "2.9.1"
composeNavigation = "2.9.0-beta03"
jbCoreBundle = "1.0.1"
-jbSavedState = "1.3.3"
+jbSavedState = "1.3.1"
gitLive = "2.1.0"
material3adaptive = "1.1.2"
@@ -203,7 +205,7 @@ zxing-core = { group = "com.google.zxing", name = "core", version.ref = "zxingVe
jb-kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" }
jb-kotlin-stdlib-js = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-js", version.ref = "kotlin" }
jb-kotlin-dom = { group = "org.jetbrains.kotlin", name = "kotlin-dom-api-compat", version.ref = "kotlin" }
-jb-composeRuntime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "compose-plugin" }
+jb-composeRuntime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "composeJB" }
jb-lifecycle-compose = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "composeLifecycle" }
jb-composeViewmodel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "composeLifecycle" }
jb-lifecycleViewmodel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel", version.ref = "composeLifecycle" }
@@ -276,9 +278,10 @@ compose-gradlePlugin = { group = "org.jetbrains.kotlin", name = "compose-compile
squareup-okio = { group = "com.squareup.okio", name = "okio", version.ref = "okioVersion" }
back-handler = { group = "com.arkivanov.essenty", name = "back-handler", version.ref = "backHandlerVersion" }
filekit-core = { group = "io.github.vinceglb", name = "filekit-core", version.ref = "fileKit" }
-filekit-compose = { group = "io.github.vinceglb", name = "filekit-compose", version.ref = "fileKit" }
filekit-coil = { module = "io.github.vinceglb:filekit-coil", version.ref = "fileKit" }
-filekit-dialog-compose = { group = "io.github.vinceglb", name = "filekit-dialogs-compose", version.ref = "fileKitDialog" }
+filekit-dialog-compose = { group = "io.github.vinceglb", name = "filekit-dialogs-compose", version.ref = "fileKit" }
+filekit-dialogs = { module = "io.github.vinceglb:filekit-dialogs", version.ref = "fileKit" }
+filekit-compose = { group = "io.github.vinceglb", name = "filekit-compose", version.ref = "fileKitCompose" }
qrose = { group = "io.github.alexzhirkevich", name="qrose", version.ref = "qroseVersion" }
lottie-compose = { group = "com.airbnb.android", name = "lottie-compose", version.ref = "lottie" }
compottie = { module = "io.github.alexzhirkevich:compottie", version.ref = "compottie" }
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index f5e988661..b71b8dc73 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Tue Oct 10 11:28:53 IST 2017
+#Sun Sep 07 08:57:15 BST 2025
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip