@momo-kits/native-kits 0.164.1-trustsans-12 → 0.165.1-beta.10-debug

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/.codegraph/codegraph.db +0 -0
  2. package/.codegraph/daemon.log +100 -0
  3. package/CLAUDE.md +1 -0
  4. package/compose/build.gradle.kts +59 -59
  5. package/compose/build.gradle.kts.backup +190 -0
  6. package/compose/compose.podspec +1 -1
  7. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/BackGesture.android.kt +12 -0
  8. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +18 -0
  9. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +30 -4
  10. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +104 -22
  11. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +3 -9
  12. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +8 -4
  13. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +2 -1
  14. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +3 -0
  15. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +66 -31
  16. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +22 -1
  17. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +25 -5
  18. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackTransition.kt +148 -0
  19. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/SwipeBackHaptic.kt +35 -0
  20. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +19 -0
  21. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +13 -2
  22. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderJourney.kt +106 -0
  23. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderLocation.kt +75 -0
  24. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/BackGesture.kt +12 -0
  25. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/HostBackGesture.ios.kt +98 -0
  26. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/BackGesture.ios.kt +38 -0
  27. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +13 -3
  28. package/gradle.properties +1 -1
  29. package/ios/native-kits.podspec +1 -1
  30. package/ios-demo/MoMoUIKitsDemo.podspec +1 -1
  31. package/package.json +1 -1
  32. package/.codegraph/.gitignore +0 -5
Binary file
@@ -0,0 +1,100 @@
1
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 51873, v1.1.0). Idle timeout 300000ms.
2
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
3
+ [CodeGraph daemon] Shutting down (inactivity backstop; clients=1).
4
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 58673, v1.1.0). Idle timeout 300000ms.
5
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
6
+ [CodeGraph daemon] Shutting down (inactivity backstop; clients=1).
7
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 80799, v1.1.0). Idle timeout 300000ms.
8
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
9
+ [CodeGraph daemon] Shutting down (inactivity backstop; clients=1).
10
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 34253, v1.1.0). Idle timeout 300000ms.
11
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
12
+ [CodeGraph daemon] Shutting down (idle timeout; clients=0).
13
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 65894, v1.1.0). Idle timeout 300000ms.
14
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
15
+ [CodeGraph MCP] Auto-synced 1 file(s) in 446ms
16
+ [CodeGraph MCP] Auto-synced 1 file(s) in 219ms
17
+ [CodeGraph MCP] Auto-synced 1 file(s) in 212ms
18
+ [CodeGraph daemon] Shutting down (idle timeout; clients=0).
19
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 68727, v1.1.0). Idle timeout 300000ms.
20
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
21
+ [CodeGraph MCP] Auto-synced 1 file(s) in 466ms
22
+ [CodeGraph MCP] Auto-synced 1 file(s) in 225ms
23
+ [CodeGraph MCP] Auto-synced 1 file(s) in 218ms
24
+ [CodeGraph MCP] Auto-synced 1 file(s) in 211ms
25
+ [CodeGraph MCP] Auto-synced 1 file(s) in 203ms
26
+ [CodeGraph MCP] Auto-synced 1 file(s) in 200ms
27
+ [CodeGraph MCP] Auto-synced 1 file(s) in 204ms
28
+ [CodeGraph daemon] Shutting down (inactivity backstop; clients=1).
29
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 97060, v1.1.0). Idle timeout 300000ms.
30
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
31
+ [CodeGraph MCP] Caught up 1 file(s) changed since last run
32
+ [CodeGraph MCP] Auto-synced 1 file(s) in 485ms
33
+ [CodeGraph MCP] Auto-synced 1 file(s) in 328ms
34
+ [CodeGraph MCP] Auto-synced 1 file(s) in 280ms
35
+ [CodeGraph MCP] Auto-synced 1 file(s) in 208ms
36
+ [CodeGraph MCP] Auto-synced 1 file(s) in 206ms
37
+ [CodeGraph MCP] Auto-synced 1 file(s) in 178ms
38
+ [CodeGraph daemon] Shutting down (idle timeout; clients=0).
39
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 2726, v1.1.0). Idle timeout 300000ms.
40
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
41
+ [CodeGraph MCP] Auto-synced 1 file(s) in 427ms
42
+ [CodeGraph MCP] Auto-synced 1 file(s) in 178ms
43
+ [CodeGraph MCP] Auto-synced 1 file(s) in 170ms
44
+ [CodeGraph MCP] Auto-synced 1 file(s) in 196ms
45
+ [CodeGraph MCP] Auto-synced 1 file(s) in 180ms
46
+ [CodeGraph MCP] Auto-synced 1 file(s) in 146ms
47
+ [CodeGraph MCP] Auto-synced 1 file(s) in 170ms
48
+ [CodeGraph MCP] Auto-synced 1 file(s) in 190ms
49
+ [CodeGraph MCP] Auto-synced 1 file(s) in 178ms
50
+ [CodeGraph daemon] Shutting down (idle timeout; clients=0).
51
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 8036, v1.1.0). Idle timeout 300000ms.
52
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
53
+ [CodeGraph daemon] Shutting down (inactivity backstop; clients=1).
54
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 14133, v1.1.0). Idle timeout 300000ms.
55
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
56
+ [CodeGraph daemon] Shutting down (idle timeout; clients=0).
57
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 34560, v1.1.0). Idle timeout 300000ms.
58
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
59
+ [CodeGraph daemon] Shutting down (inactivity backstop; clients=1).
60
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 73920, v1.1.0). Idle timeout 300000ms.
61
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
62
+ [CodeGraph daemon] Shutting down (idle timeout; clients=0).
63
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 8855, v1.1.0). Idle timeout 300000ms.
64
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
65
+ [CodeGraph daemon] Shutting down (inactivity backstop; clients=1).
66
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 39954, v1.1.0). Idle timeout 300000ms.
67
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
68
+ [CodeGraph MCP] Auto-synced 124 file(s) in 1892ms
69
+ [CodeGraph MCP] Auto-synced 1 file(s) in 247ms
70
+ [CodeGraph daemon] Shutting down (inactivity backstop; clients=1).
71
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 70751, v1.1.0). Idle timeout 300000ms.
72
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
73
+ [CodeGraph MCP] Caught up 1 file(s) changed since last run
74
+ [CodeGraph daemon] Shutting down (inactivity backstop; clients=1).
75
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 89552, v1.1.0). Idle timeout 300000ms.
76
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
77
+ [CodeGraph daemon] Shutting down (idle timeout; clients=0).
78
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 98891, v1.1.0). Idle timeout 300000ms.
79
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
80
+ [CodeGraph daemon] Shutting down (inactivity backstop; clients=1).
81
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 57037, v1.1.0). Idle timeout 300000ms.
82
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
83
+ [CodeGraph daemon] Shutting down (inactivity backstop; clients=1).
84
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 32794, v1.1.0). Idle timeout 300000ms.
85
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
86
+ [CodeGraph MCP] Caught up 4 file(s) changed since last run
87
+ [CodeGraph daemon] Shutting down (idle timeout; clients=0).
88
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 57725, v1.1.0). Idle timeout 300000ms.
89
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
90
+ [CodeGraph MCP] Caught up 17 file(s) changed since last run
91
+ [CodeGraph MCP] Auto-synced 13 file(s) in 241ms
92
+ [CodeGraph MCP] Auto-synced 13 file(s) in 246ms
93
+ [CodeGraph MCP] Auto-synced 1 file(s) in 181ms
94
+ [CodeGraph MCP] Auto-synced 1 file(s) in 186ms
95
+ [CodeGraph MCP] Auto-synced 1 file(s) in 176ms
96
+ [CodeGraph daemon] Shutting down (idle timeout; clients=0).
97
+ [CodeGraph daemon] Listening on /Users/sonnguyen/Documents/Momo/momo-native-kits/.codegraph/daemon.sock (pid 26309, v1.1.0). Idle timeout 300000ms.
98
+ [CodeGraph MCP] File watcher active — graph will auto-sync on changes
99
+ [CodeGraph MCP] Caught up 267 file(s) changed since last run
100
+ [CodeGraph daemon] Shutting down (inactivity backstop; clients=1).
package/CLAUDE.md CHANGED
@@ -41,6 +41,7 @@ Publishing is automated (`publish.sh` + GitLab CI on `[ci build]` / `main`). Do
41
41
 
42
42
  - **Entry point:** wrap content in `NavigationContainer(...)` from `navigation/`. It builds the `Navigator`, takes a host-supplied `Localize` (falls back to an empty one), and provides the CompositionLocals below. **Do not use** `ApplicationContainer` (`application/NavigationContainer.kt`) — deprecated and does **not** wire `LocalLocalize` / `LocalNavigator` / `LocalMaxApi`.
43
43
  - **Configuration flows via CompositionLocals**, not params. Public ones: `AppTheme`, `AppStatusBar`, `AppNavigationBar` (`const/Theme.kt`); `ApplicationContext`, `AppConfig`, `AppLanguage`, `LocalLocalize` (`application/`); `LocalNavigator`, `LocalMaxApi` (`navigation/`). Read with `X.current`.
44
+ - **Design-system config** (`trustBanner`, `headerBar`, `headerGradient`): the host seeds `KitDesignSystemConfig.update(...)` once (same pattern as `KitFontScale`); `NavigationContainer` provides it as `LocalDesignSystemConfig` (param `designSystemConfig` → parent → global) and applies `headerBar` as the header image when the theme has none.
44
45
  - **Platform code** goes through `expect`/`actual` in `platform/` — never reference Android/iOS APIs from `commonMain` directly.
45
46
  - **Native bridge:** `IMaxApi` (`vn.momo.maxapi`, exposed as `LocalMaxApi`) is the host-app bridge (dismiss, tracking, device info, language).
46
47
  - Navigation uses a runtime `DynamicScreenRegistry`; overlays (modal/bottom-sheet/snackbar) go through `Navigator` + `OverplayComponentRegistry`.
@@ -1,5 +1,5 @@
1
- import com.vanniktech.maven.publish.JavadocJar
2
- import com.vanniktech.maven.publish.KotlinMultiplatform
1
+ // import com.vanniktech.maven.publish.JavadocJar
2
+ // import com.vanniktech.maven.publish.KotlinMultiplatform
3
3
  import org.jetbrains.kotlin.gradle.dsl.JvmTarget
4
4
 
5
5
  plugins {
@@ -7,7 +7,7 @@ plugins {
7
7
  alias(libs.plugins.android.library)
8
8
  alias(libs.plugins.compose)
9
9
  alias(libs.plugins.kotlin.compose.compiler)
10
- alias(libs.plugins.vanniktech.mavenPublish)
10
+ // alias(libs.plugins.vanniktech.mavenPublish)
11
11
  id(libs.plugins.jetbrains.kotlin.cocoapods.get().pluginId)
12
12
  kotlin("plugin.serialization")
13
13
  }
@@ -40,7 +40,7 @@ kotlin {
40
40
  }
41
41
 
42
42
  cocoapods {
43
- version = gitlabVersion
43
+ version = "0.165.1-beta.10-debug"
44
44
  summary = "IOS Shared module"
45
45
  homepage = "https://momo.vn"
46
46
  ios.deploymentTarget = "15.0"
@@ -90,14 +90,14 @@ kotlin {
90
90
  }
91
91
 
92
92
  android {
93
- namespace = "$gitlabGroup.$gitlabArtifactId"
94
- compileSdk = libs.versions.android.compileSdk.get().toInt()
93
+ namespace = "vn.momo.kits.kits"
94
+ compileSdk = 35
95
95
  compileOptions {
96
96
  sourceCompatibility = JavaVersion.VERSION_17
97
97
  targetCompatibility = JavaVersion.VERSION_17
98
98
  }
99
99
  defaultConfig {
100
- minSdk = libs.versions.android.minSdk.get().toInt()
100
+ minSdk = 24
101
101
  }
102
102
  }
103
103
 
@@ -136,55 +136,55 @@ compose {
136
136
  }
137
137
  }
138
138
 
139
- publishing {
140
- repositories {
141
- maven {
142
- name = "${gitlabRepo}Packages"
143
- credentials {
144
- username = gitlabUser
145
- password = gitlabKey
146
- }
147
- url = uri("$gitlabUrl")
148
- }
149
- }
150
- }
151
-
152
- mavenPublishing {
153
- configure(
154
- KotlinMultiplatform(
155
- javadocJar = JavadocJar.Empty(),
156
- sourcesJar = true,
157
- androidVariantsToPublish = listOf("release")
158
- )
159
- )
160
-
161
- repositories {
162
- maven {
163
- name = "${gitlabRepo}Packages"
164
- credentials { username = gitlabUser; password = gitlabKey }
165
- url = uri("$gitlabUrl")
166
- }
167
- }
168
-
169
- coordinates(gitlabGroup.toString(), gitlabArtifactId, gitlabVersion.toString())
170
-
171
- pom {
172
- name = "$gitlabName Klib"
173
- description = "$gitlabName"
174
- url = "https://gitlab.mservice.com.vn"
175
- licenses {
176
- license {
177
- name = "The Apache License, Version 2.0"
178
- url = "https://www.apache.org/licenses/LICENSE-2.0.txt"
179
- distribution = "https://www.apache.org/licenses/LICENSE-2.0.txt"
180
- }
181
- }
182
- developers {
183
- developer {
184
- id = "kotlin-hands-on"
185
- name = "Kotlin Developer Advocate"
186
- url = "https://github.com/kotlin-hands-on/"
187
- }
188
- }
189
- }
190
- }
139
+ // publishing {
140
+ // repositories {
141
+ // maven {
142
+ // name = "${gitlabRepo}Packages"
143
+ // credentials {
144
+ // username = gitlabUser
145
+ // password = gitlabKey
146
+ // }
147
+ // url = uri("$gitlabUrl")
148
+ // }
149
+ // }
150
+ // }
151
+
152
+ // mavenPublishing {
153
+ // configure(
154
+ // KotlinMultiplatform(
155
+ // javadocJar = JavadocJar.Empty(),
156
+ // sourcesJar = true,
157
+ // androidVariantsToPublish = listOf("release")
158
+ // )
159
+ // )
160
+ //
161
+ // repositories {
162
+ // maven {
163
+ // name = "${gitlabRepo}Packages"
164
+ // credentials { username = gitlabUser; password = gitlabKey }
165
+ // url = uri("$gitlabUrl")
166
+ // }
167
+ // }
168
+ //
169
+ // coordinates(gitlabGroup.toString(), gitlabArtifactId, gitlabVersion.toString())
170
+ //
171
+ // pom {
172
+ // name = "$gitlabName Klib"
173
+ // description = "$gitlabName"
174
+ // url = "https://gitlab.mservice.com.vn"
175
+ // licenses {
176
+ // license {
177
+ // name = "The Apache License, Version 2.0"
178
+ // url = "https://www.apache.org/licenses/LICENSE-2.0.txt"
179
+ // distribution = "https://www.apache.org/licenses/LICENSE-2.0.txt"
180
+ // }
181
+ // }
182
+ // developers {
183
+ // developer {
184
+ // id = "kotlin-hands-on"
185
+ // name = "Kotlin Developer Advocate"
186
+ // url = "https://github.com/kotlin-hands-on/"
187
+ // }
188
+ // }
189
+ // }
190
+ // }
@@ -0,0 +1,190 @@
1
+ import com.vanniktech.maven.publish.JavadocJar
2
+ import com.vanniktech.maven.publish.KotlinMultiplatform
3
+ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
4
+
5
+ plugins {
6
+ alias(libs.plugins.jetbrains.kotlin.multiplatform)
7
+ alias(libs.plugins.android.library)
8
+ alias(libs.plugins.compose)
9
+ alias(libs.plugins.kotlin.compose.compiler)
10
+ alias(libs.plugins.vanniktech.mavenPublish)
11
+ id(libs.plugins.jetbrains.kotlin.cocoapods.get().pluginId)
12
+ kotlin("plugin.serialization")
13
+ }
14
+
15
+ val gitlabName: String = findProperty("name") as String? ?: ""
16
+ val gitlabRepo: String = findProperty("repo") as String? ?: ""
17
+ val gitlabUrl: String = findProperty("url") as String? ?: ""
18
+ val gitlabGroup: String = findProperty("group") as String? ?: ""
19
+ val gitlabArtifactId: String = findProperty("artifact.id") as String? ?: ""
20
+ val gitlabVersion: String = findProperty("version") as String? ?: ""
21
+ val gitlabUser: String = findProperty("gitlab.user") as String? ?: ""
22
+ val gitlabKey: String = findProperty("gitlab.password") as String? ?: ""
23
+
24
+ kotlin {
25
+ androidTarget {
26
+ compilerOptions {
27
+ jvmTarget.set(JvmTarget.JVM_17)
28
+ }
29
+ publishLibraryVariants("release")
30
+ }
31
+
32
+ val fwName = gitlabArtifactId
33
+ val iosTargets = listOf(iosArm64(), iosSimulatorArm64())
34
+ iosTargets.forEach {
35
+ it.binaries.framework {
36
+ baseName = fwName
37
+ binaryOption("bundleId", "$gitlabGroup.$fwName")
38
+ isStatic = true
39
+ }
40
+ }
41
+
42
+ cocoapods {
43
+ version = gitlabVersion
44
+ summary = "IOS Shared module"
45
+ homepage = "https://momo.vn"
46
+ ios.deploymentTarget = "15.0"
47
+
48
+ framework {
49
+ baseName = fwName
50
+ isStatic = true
51
+ }
52
+
53
+ pod("lottie-ios") {
54
+ moduleName = "Lottie"
55
+ version = "4.4.3"
56
+ extraOpts += listOf("-compiler-option", "-fmodules")
57
+ }
58
+ }
59
+
60
+ sourceSets {
61
+ all {
62
+ languageSettings.optIn("vn.momo.kits.modifier.InternalApi")
63
+ }
64
+ commonMain.dependencies {
65
+ implementation(compose.runtime)
66
+ implementation(compose.material)
67
+ implementation(compose.material3)
68
+ implementation(compose.components.resources)
69
+ implementation(libs.compose.ui.backhandler)
70
+ implementation(libs.ktor.client.core)
71
+ implementation(libs.jetbrains.coroutines.core)
72
+ implementation(libs.navigation.multiplatform)
73
+ implementation(libs.coil.multiplatform.compose)
74
+ implementation(libs.coil.multiplatform.core)
75
+ implementation(libs.coil.multiplatform.network.ktor)
76
+ implementation(libs.jetbrains.serialization.json)
77
+ implementation(libs.kotlinx.datetime)
78
+ api(libs.native.max.api)
79
+ implementation(libs.compottie)
80
+ implementation(libs.gif.image)
81
+ }
82
+ androidMain.dependencies {
83
+ implementation(libs.ktor.client.okhttp)
84
+ implementation(libs.airbnb.lottie)
85
+ }
86
+ iosMain.dependencies {
87
+ implementation(libs.ktor.client.darwin)
88
+ }
89
+ }
90
+ }
91
+
92
+ android {
93
+ namespace = "$gitlabGroup.$gitlabArtifactId"
94
+ compileSdk = libs.versions.android.compileSdk.get().toInt()
95
+ compileOptions {
96
+ sourceCompatibility = JavaVersion.VERSION_17
97
+ targetCompatibility = JavaVersion.VERSION_17
98
+ }
99
+ defaultConfig {
100
+ minSdk = libs.versions.android.minSdk.get().toInt()
101
+ }
102
+ }
103
+
104
+ dependencies {
105
+ }
106
+
107
+ repositories {
108
+ google {
109
+ mavenContent {
110
+ includeGroupAndSubgroups("androidx")
111
+ includeGroupAndSubgroups("com.android")
112
+ includeGroupAndSubgroups("com.google")
113
+ }
114
+ }
115
+ mavenCentral()
116
+ maven { url = uri("https://maven.pkg.jetbrains.space/public/p/compose/dev") }
117
+ maven {
118
+ url = uri("https://gitlab.mservice.com.vn/api/v4/projects/5400/packages/maven")
119
+ credentials {username = "download_packages"; password = "gldt-bjDqLpU_sPcHDuXau2ws" }
120
+ }
121
+ maven {
122
+ url = uri("https://artifacts.mservice.com.vn/repository/maven-momo-app/")
123
+ credentials {
124
+ username = "viewer"
125
+ password = "viewer"
126
+ }
127
+ isAllowInsecureProtocol = true
128
+ }
129
+ }
130
+
131
+ compose {
132
+ resources {
133
+ publicResClass = true
134
+ packageOfResClass = "vn.momo.uikits.resources"
135
+ generateResClass = always
136
+ }
137
+ }
138
+
139
+ publishing {
140
+ repositories {
141
+ maven {
142
+ name = "${gitlabRepo}Packages"
143
+ credentials {
144
+ username = gitlabUser
145
+ password = gitlabKey
146
+ }
147
+ url = uri("$gitlabUrl")
148
+ }
149
+ }
150
+ }
151
+
152
+ mavenPublishing {
153
+ configure(
154
+ KotlinMultiplatform(
155
+ javadocJar = JavadocJar.Empty(),
156
+ sourcesJar = true,
157
+ androidVariantsToPublish = listOf("release")
158
+ )
159
+ )
160
+
161
+ repositories {
162
+ maven {
163
+ name = "${gitlabRepo}Packages"
164
+ credentials { username = gitlabUser; password = gitlabKey }
165
+ url = uri("$gitlabUrl")
166
+ }
167
+ }
168
+
169
+ coordinates(gitlabGroup.toString(), gitlabArtifactId, gitlabVersion.toString())
170
+
171
+ pom {
172
+ name = "$gitlabName Klib"
173
+ description = "$gitlabName"
174
+ url = "https://gitlab.mservice.com.vn"
175
+ licenses {
176
+ license {
177
+ name = "The Apache License, Version 2.0"
178
+ url = "https://www.apache.org/licenses/LICENSE-2.0.txt"
179
+ distribution = "https://www.apache.org/licenses/LICENSE-2.0.txt"
180
+ }
181
+ }
182
+ developers {
183
+ developer {
184
+ id = "kotlin-hands-on"
185
+ name = "Kotlin Developer Advocate"
186
+ url = "https://github.com/kotlin-hands-on/"
187
+ }
188
+ }
189
+ }
190
+ }
@@ -1,6 +1,6 @@
1
1
  Pod::Spec.new do |spec|
2
2
  spec.name = 'compose'
3
- spec.version = '0.164.1-trustsans-9-debug'
3
+ spec.version = '0.165.1-beta.10-debug'
4
4
  spec.homepage = 'https://momo.vn'
5
5
  spec.source = { :http=> ''}
6
6
  spec.authors = ''
@@ -0,0 +1,12 @@
1
+ package vn.momo.kits.platform
2
+
3
+ import androidx.compose.runtime.Composable
4
+ import androidx.compose.runtime.State
5
+ import androidx.compose.runtime.mutableStateOf
6
+ import androidx.compose.runtime.remember
7
+
8
+ // No passive observer at androidx.activity 1.10.x; a second callback would steal the gesture.
9
+ @Composable
10
+ actual fun rememberBackGestureProgress(): State<Float?> = remember { mutableStateOf(null) }
11
+
12
+ actual fun reportFloatingArrowBack(shouldUse: Boolean) = Unit
@@ -1,6 +1,9 @@
1
1
  package vn.momo.kits.application
2
2
 
3
3
  import androidx.compose.runtime.Immutable
4
+ import androidx.compose.runtime.getValue
5
+ import androidx.compose.runtime.mutableStateOf
6
+ import androidx.compose.runtime.setValue
4
7
  import androidx.compose.runtime.staticCompositionLocalOf
5
8
  import vn.momo.kits.components.TrustBannerData
6
9
 
@@ -16,6 +19,17 @@ data class DesignSystemConfig(
16
19
  val headerGradient: String? = null,
17
20
  )
18
21
 
22
+ // App-wide holder seeded by the host (same pattern as KitFontScale), so direct NavigationContainer
23
+ // callers get the config without passing it. Snapshot state: a config fetched after first frame recomposes.
24
+ object KitDesignSystemConfig {
25
+ var config by mutableStateOf<DesignSystemConfig?>(null)
26
+ private set
27
+
28
+ fun update(config: DesignSystemConfig?) {
29
+ this.config = config
30
+ }
31
+ }
32
+
19
33
  @Immutable
20
34
  data class MiniAppContext(
21
35
  val appIcon: String = "",
@@ -102,5 +116,9 @@ val LocalComponentInformation = staticCompositionLocalOf<ComponentInformation?>
102
116
  null
103
117
  }
104
118
 
119
+ val LocalDesignSystemConfig = staticCompositionLocalOf<DesignSystemConfig?> {
120
+ null
121
+ }
122
+
105
123
  @Deprecated("Max font scale is fixed at MAX_FONT_SCALE (1.5); this CompositionLocal is no longer read.")
106
124
  val ScaleSizeMaxRate = staticCompositionLocalOf<Float?> { null }
@@ -1,5 +1,6 @@
1
1
  package vn.momo.kits.components
2
2
 
3
+ import androidx.compose.foundation.Canvas
3
4
  import androidx.compose.foundation.background
4
5
  import androidx.compose.foundation.layout.Box
5
6
  import androidx.compose.foundation.layout.fillMaxWidth
@@ -7,17 +8,42 @@ import androidx.compose.foundation.layout.height
7
8
  import androidx.compose.foundation.layout.padding
8
9
  import androidx.compose.runtime.Composable
9
10
  import androidx.compose.ui.Modifier
11
+ import androidx.compose.ui.geometry.Offset
12
+ import androidx.compose.ui.graphics.PathEffect
13
+ import androidx.compose.ui.graphics.StrokeCap
10
14
  import androidx.compose.ui.unit.dp
11
15
  import vn.momo.kits.const.AppTheme
12
16
  import vn.momo.kits.const.Spacing
13
17
 
18
+ enum class DividerType { DEFAULT, DASH }
19
+
14
20
  @Composable
15
- fun Divider() {
21
+ fun Divider(useMargin: Boolean = true, type: DividerType = DividerType.DEFAULT) {
22
+ val color = AppTheme.current.colors.border.default
23
+ val margin = if (useMargin) Spacing.XS else 0.dp
24
+ if (type == DividerType.DASH) {
25
+ Canvas(
26
+ modifier = Modifier
27
+ .fillMaxWidth()
28
+ .padding(vertical = margin)
29
+ .height(1.dp),
30
+ ) {
31
+ drawLine(
32
+ color = color,
33
+ start = Offset(0f, size.height / 2f),
34
+ end = Offset(size.width, size.height / 2f),
35
+ strokeWidth = size.height,
36
+ cap = StrokeCap.Round,
37
+ pathEffect = PathEffect.dashPathEffect(floatArrayOf(4.dp.toPx(), 4.dp.toPx())),
38
+ )
39
+ }
40
+ return
41
+ }
16
42
  Box(
17
43
  modifier = Modifier
18
44
  .fillMaxWidth()
45
+ .padding(vertical = margin)
19
46
  .height(1.dp)
20
- .background(color = AppTheme.current.colors.border.default)
21
- .padding(vertical = Spacing.XS)
47
+ .background(color = color),
22
48
  )
23
- }
49
+ }