@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.
- package/.codegraph/codegraph.db +0 -0
- package/.codegraph/daemon.log +100 -0
- package/CLAUDE.md +1 -0
- package/compose/build.gradle.kts +59 -59
- package/compose/build.gradle.kts.backup +190 -0
- package/compose/compose.podspec +1 -1
- package/compose/src/androidMain/kotlin/vn/momo/kits/platform/BackGesture.android.kt +12 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +18 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +30 -4
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +104 -22
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +3 -9
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +8 -4
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +2 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +3 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +66 -31
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +22 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +25 -5
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackTransition.kt +148 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/SwipeBackHaptic.kt +35 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +19 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +13 -2
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderJourney.kt +106 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderLocation.kt +75 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/platform/BackGesture.kt +12 -0
- package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/HostBackGesture.ios.kt +98 -0
- package/compose/src/iosMain/kotlin/vn/momo/kits/platform/BackGesture.ios.kt +38 -0
- package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +13 -3
- package/gradle.properties +1 -1
- package/ios/native-kits.podspec +1 -1
- package/ios-demo/MoMoUIKitsDemo.podspec +1 -1
- package/package.json +1 -1
- 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`.
|
package/compose/build.gradle.kts
CHANGED
|
@@ -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
|
-
|
|
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 =
|
|
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 = "
|
|
94
|
-
compileSdk =
|
|
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 =
|
|
100
|
+
minSdk = 24
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
|
|
@@ -136,55 +136,55 @@ compose {
|
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
-
publishing {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
mavenPublishing {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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
|
+
}
|
package/compose/compose.podspec
CHANGED
|
@@ -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 =
|
|
21
|
-
.padding(vertical = Spacing.XS)
|
|
47
|
+
.background(color = color),
|
|
22
48
|
)
|
|
23
|
-
}
|
|
49
|
+
}
|