@momo-kits/native-kits 0.168.1-beta.16-debug → 0.168.1-beta.18

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 (140) hide show
  1. package/.claude/settings.local.json +185 -0
  2. package/CLAUDE.md +1 -1
  3. package/ios/Navigation/BottomSheet.swift +5 -3
  4. package/ios/native-kits.podspec +1 -1
  5. package/ios-demo/MoMoUIKitsDemo.podspec +1 -1
  6. package/package.json +1 -1
  7. package/build.gradle.kts +0 -11
  8. package/compose/build.gradle.kts +0 -198
  9. package/compose/build.gradle.kts.backup +0 -198
  10. package/compose/compose.podspec +0 -47
  11. package/compose/src/androidMain/kotlin/vn/momo/kits/const/HostFont.android.kt +0 -20
  12. package/compose/src/androidMain/kotlin/vn/momo/kits/navigation/ScrollToTop.android.kt +0 -6
  13. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/BackGesture.android.kt +0 -12
  14. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/OsFontScale.android.kt +0 -7
  15. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +0 -153
  16. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/ReservedRegions.android.kt +0 -6
  17. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +0 -110
  18. package/compose/src/commonMain/kotlin/vn/momo/kits/application/DesignSystemKits.kt +0 -62
  19. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +0 -1071
  20. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Localize.kt +0 -269
  21. package/compose/src/commonMain/kotlin/vn/momo/kits/application/WidgetContainer.kt +0 -56
  22. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Avatar.kt +0 -157
  23. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +0 -81
  24. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +0 -32
  25. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +0 -338
  26. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BaselineView.kt +0 -175
  27. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +0 -357
  28. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Carousel.kt +0 -115
  29. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +0 -89
  30. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +0 -128
  31. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Collapse.kt +0 -209
  32. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +0 -542
  33. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +0 -49
  34. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +0 -86
  35. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +0 -125
  36. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +0 -231
  37. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +0 -189
  38. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +0 -478
  39. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +0 -114
  40. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +0 -265
  41. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +0 -235
  42. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +0 -223
  43. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +0 -265
  44. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +0 -185
  45. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +0 -343
  46. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Loader.kt +0 -108
  47. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +0 -56
  48. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +0 -41
  49. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +0 -84
  50. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +0 -40
  51. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +0 -370
  52. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +0 -108
  53. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ProgressInfo.kt +0 -308
  54. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +0 -59
  55. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Rating.kt +0 -87
  56. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +0 -21
  57. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +0 -90
  58. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Slider.kt +0 -330
  59. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +0 -220
  60. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Steps.kt +0 -473
  61. package/compose/src/commonMain/kotlin/vn/momo/kits/components/SuggestAction.kt +0 -122
  62. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Swipe.kt +0 -207
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +0 -92
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +0 -560
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +0 -86
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +0 -125
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +0 -207
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +0 -501
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +0 -176
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Uploader.kt +0 -182
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +0 -193
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +0 -29
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +0 -236
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +0 -180
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +0 -325
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/const/HostFont.kt +0 -17
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +0 -12
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +0 -16
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +0 -194
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +0 -287
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +0 -54
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +0 -50
  83. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/ScreenLayout.kt +0 -321
  84. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +0 -41
  85. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +0 -52
  86. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +0 -66
  87. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +0 -11
  88. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +0 -104
  89. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +0 -48
  90. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +0 -51
  91. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +0 -502
  92. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/HostBackGestureBridge.kt +0 -58
  93. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +0 -148
  94. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +0 -116
  95. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +0 -205
  96. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +0 -422
  97. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ScrollToTop.kt +0 -8
  98. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +0 -732
  99. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackTransition.kt +0 -148
  100. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/SwipeBackHaptic.kt +0 -35
  101. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +0 -228
  102. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +0 -217
  103. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +0 -86
  104. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/DuoBarCompression.kt +0 -97
  105. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/DuoTabBar.kt +0 -377
  106. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +0 -169
  107. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +0 -455
  108. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +0 -105
  109. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderJourney.kt +0 -106
  110. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderLocation.kt +0 -74
  111. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +0 -399
  112. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +0 -39
  113. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +0 -363
  114. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SideBar.kt +0 -192
  115. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +0 -133
  116. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/tracking/ScreenTracker.kt +0 -127
  117. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/BackGesture.kt +0 -12
  118. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/ComposeLottieAnimation.kt +0 -91
  119. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/OsFontScale.kt +0 -9
  120. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +0 -74
  121. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/ReservedRegions.kt +0 -20
  122. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +0 -1329
  123. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +0 -55
  124. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Tracking.kt +0 -15
  125. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +0 -118
  126. package/compose/src/iosMain/kotlin/vn/momo/kits/const/HostFont.ios.kt +0 -42
  127. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/HostBackGesture.ios.kt +0 -45
  128. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/ScrollToTop.ios.kt +0 -32
  129. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/BackGesture.ios.kt +0 -38
  130. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/OsFontScale.ios.kt +0 -66
  131. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +0 -218
  132. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/ReservedRegions.ios.kt +0 -138
  133. package/gradle/libs.versions.toml +0 -69
  134. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  135. package/gradle/wrapper/gradle-wrapper.properties +0 -8
  136. package/gradle.properties +0 -26
  137. package/gradlew +0 -252
  138. package/gradlew.bat +0 -94
  139. package/ios-demo/README.md +0 -120
  140. package/settings.gradle.kts +0 -64
@@ -1,198 +0,0 @@
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
- }
191
-
192
- // Xcode 27 rejects iOS < 15; KGP's synthetic Podfile only raises pods to 12 (KT-57741), leaving lottie-ios at 13.
193
- tasks.named("podGenIos") {
194
- doLast {
195
- val podfile = layout.buildDirectory.file("cocoapods/synthetic/ios/Podfile").get().asFile
196
- podfile.writeText(podfile.readText().replace("major < 12 ||", "major < 15 ||").replace("#{12}", "#{15}"))
197
- }
198
- }
@@ -1,47 +0,0 @@
1
- Pod::Spec.new do |spec|
2
- spec.name = 'compose'
3
- spec.version = '0.168.1-beta.8-debug'
4
- spec.homepage = 'https://momo.vn'
5
- spec.source = { :http=> ''}
6
- spec.authors = ''
7
- spec.license = ''
8
- spec.summary = 'IOS Shared module'
9
- spec.vendored_frameworks = 'build/cocoapods/framework/kits.framework'
10
- spec.libraries = 'c++'
11
- spec.ios.deployment_target = '15.0'
12
- spec.dependency 'lottie-ios', '4.4.3'
13
- if !Dir.exist?('build/cocoapods/framework/kits.framework') || Dir.empty?('build/cocoapods/framework/kits.framework')
14
- raise "
15
- Kotlin framework 'kits' doesn't exist yet, so a proper Xcode project can't be generated.
16
- 'pod install' should be executed after running ':generateDummyFramework' Gradle task:
17
- ./gradlew :compose:generateDummyFramework
18
- Alternatively, proper pod installation is performed during Gradle sync in the IDE (if Podfile location is set)"
19
- end
20
- spec.xcconfig = {
21
- 'ENABLE_USER_SCRIPT_SANDBOXING' => 'NO',
22
- }
23
- spec.pod_target_xcconfig = {
24
- 'KOTLIN_PROJECT_PATH' => ':compose',
25
- 'PRODUCT_MODULE_NAME' => 'kits',
26
- }
27
- spec.script_phases = [
28
- {
29
- :name => 'Build compose',
30
- :execution_position => :before_compile,
31
- :shell_path => '/bin/sh',
32
- :script => <<-SCRIPT
33
- if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then
34
- echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\""
35
- exit 0
36
- fi
37
- set -ev
38
- REPO_ROOT="$PODS_TARGET_SRCROOT"
39
- "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \
40
- -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \
41
- -Pkotlin.native.cocoapods.archs="$ARCHS" \
42
- -Pkotlin.native.cocoapods.configuration="$CONFIGURATION"
43
- SCRIPT
44
- }
45
- ]
46
- spec.resources = ['build/compose/cocoapods/compose-resources']
47
- end
@@ -1,20 +0,0 @@
1
- package vn.momo.kits.const
2
-
3
- import androidx.compose.runtime.Composable
4
- import androidx.compose.runtime.remember
5
- import androidx.compose.ui.platform.LocalContext
6
- import androidx.compose.ui.text.font.Font
7
- import androidx.compose.ui.text.font.FontFamily
8
- import androidx.compose.ui.text.font.FontWeight
9
-
10
- @Composable
11
- internal actual fun hostFontFamily(fileName: String, weight: FontWeight): FontFamily? {
12
- val assets = LocalContext.current.applicationContext.assets
13
- return remember(fileName, weight) {
14
- val path = "fonts/$fileName"
15
- // AssetManager.open ném IOException nếu thiếu file; Font(path, assetManager) thì lỗi
16
- // muộn lúc render nên phải kiểm tra tồn tại trước.
17
- val exists = runCatching { assets.open(path).close() }.isSuccess
18
- if (exists) FontFamily(Font(path = path, assetManager = assets, weight = weight)) else null
19
- }
20
- }
@@ -1,6 +0,0 @@
1
- package vn.momo.kits.navigation
2
-
3
- import androidx.compose.runtime.Composable
4
-
5
- @Composable
6
- internal actual fun RegisterScrollToTop(callback: (() -> Unit)?) = Unit
@@ -1,12 +0,0 @@
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,7 +0,0 @@
1
- package vn.momo.kits.platform
2
-
3
- import androidx.compose.runtime.Composable
4
-
5
- // Android's LocalDensity.fontScale already tracks Configuration.fontScale live.
6
- @Composable
7
- actual fun ProvideOsFontScale(content: @Composable () -> Unit) = content()
@@ -1,153 +0,0 @@
1
- package vn.momo.kits.platform
2
-
3
- import android.annotation.SuppressLint
4
- import android.content.res.Resources
5
- import android.graphics.BlurMaskFilter
6
- import android.graphics.PorterDuff
7
- import android.graphics.PorterDuffColorFilter
8
- import android.os.Build
9
- import androidx.compose.foundation.layout.Box
10
- import androidx.compose.runtime.Composable
11
- import androidx.compose.runtime.LaunchedEffect
12
- import androidx.compose.runtime.getValue
13
- import androidx.compose.runtime.rememberUpdatedState
14
- import androidx.compose.runtime.snapshotFlow
15
- import androidx.compose.ui.Modifier
16
- import androidx.compose.ui.graphics.Color
17
- import androidx.compose.ui.graphics.NativePaint
18
- import androidx.compose.ui.graphics.toArgb
19
- import androidx.compose.ui.platform.LocalConfiguration
20
- import androidx.compose.ui.semantics.contentDescription
21
- import androidx.compose.ui.semantics.semantics
22
- import androidx.compose.ui.unit.Dp
23
- import androidx.compose.ui.unit.dp
24
- import com.airbnb.lottie.LottieProperty
25
- import com.airbnb.lottie.compose.LottieAnimation
26
- import com.airbnb.lottie.compose.LottieCompositionSpec
27
- import com.airbnb.lottie.compose.animateLottieCompositionAsState
28
- import com.airbnb.lottie.compose.rememberLottieComposition
29
- import com.airbnb.lottie.compose.rememberLottieDynamicProperties
30
- import com.airbnb.lottie.compose.rememberLottieDynamicProperty
31
- import vn.momo.kits.const.AppNavigationBar
32
- import vn.momo.kits.const.AppStatusBar
33
- import vn.momo.kits.navigation.Navigator
34
- import vn.momo.kits.utils.readJson
35
- import androidx.activity.compose.BackHandler as AndroidBackHandler
36
-
37
- actual fun getPlatformName(): String = "Android"
38
-
39
- actual fun isPhoneIdiom(): Boolean = false
40
-
41
- @Composable
42
- actual fun getScreenDimensions(): ScreenDimension {
43
- val config = LocalConfiguration.current
44
- return ScreenDimension(
45
- config.screenWidthDp, config.screenHeightDp
46
- )
47
- }
48
-
49
- actual fun NativePaint.setMaskFilter(blurRadius: Float) {
50
- this.maskFilter = BlurMaskFilter(blurRadius, BlurMaskFilter.Blur.NORMAL)
51
- }
52
-
53
- @SuppressLint("InternalInsetResource")
54
- @Composable
55
- actual fun getStatusBarHeight(): Dp {
56
- val resourceId = Resources.getSystem().getIdentifier(
57
- "status_bar_height",
58
- "dimen",
59
- "android"
60
- )
61
- return if(resourceId > 0) Resources.getSystem().getDimensionPixelSize(resourceId).dp else 0.dp
62
- }
63
-
64
- @Composable
65
- actual fun BackHandler(enabled: Boolean, onBack: () -> Unit) {
66
- AndroidBackHandler(enabled = enabled, onBack = onBack)
67
- }
68
-
69
- @Composable
70
- actual fun ProvideNavigationEventDispatcherOwner(navigator: Navigator, content: @Composable () -> Unit) {
71
- content()
72
- }
73
-
74
- @Composable
75
- actual fun getScreenHeight(): Dp {
76
- return getScreenDimensions().height.dp + if (getOSVersion() >= 35) 0.dp else AppStatusBar.current + AppNavigationBar.current
77
- }
78
-
79
- actual fun getOSVersion(): OSVersion = OSVersion.Android(sdk = Build.VERSION.SDK_INT)
80
-
81
- @Composable
82
- actual fun LottieAnimation(
83
- path: String,
84
- tintColor: Color?,
85
- bgColor: Color?,
86
- placedAsOverlay: Boolean,
87
- iterations: Int,
88
- isPlaying: Boolean,
89
- onEvent: ((String) -> Unit)?,
90
- modifier: Modifier,
91
- useCompose: Boolean
92
- ) {
93
- if (useCompose) {
94
- ComposeLottieAnimation(path, tintColor, bgColor, iterations, isPlaying, onEvent, modifier)
95
- return
96
- }
97
-
98
- val json = readJson(path)
99
-
100
- if (json.isEmpty()) {
101
- Box(modifier)
102
- return
103
- }
104
-
105
- val composition by rememberLottieComposition(
106
- LottieCompositionSpec.JsonString(json)
107
- )
108
-
109
- val colorFilter = PorterDuffColorFilter(
110
- tintColor?.toArgb() ?: Color.White.toArgb(),
111
- PorterDuff.Mode.SRC_ATOP
112
- )
113
-
114
- val dynamicProperties = rememberLottieDynamicProperties(
115
- rememberLottieDynamicProperty(
116
- property = LottieProperty.COLOR_FILTER,
117
- value = colorFilter,
118
- keyPath = arrayOf("**")
119
- )
120
- )
121
-
122
- val lottieState = animateLottieCompositionAsState(
123
- composition = composition,
124
- iterations = iterations,
125
- isPlaying = isPlaying,
126
- restartOnPlay = false,
127
- )
128
-
129
- val currentOnEvent by rememberUpdatedState(onEvent)
130
-
131
- LaunchedEffect(isPlaying) {
132
- currentOnEvent?.invoke(if (isPlaying) LottieEvent.Start else LottieEvent.Pause)
133
- }
134
-
135
- LaunchedEffect(lottieState) {
136
- var armed = false
137
- snapshotFlow { lottieState.isAtEnd }.collect { atEnd ->
138
- if (!atEnd) armed = true
139
- else if (armed) { armed = false; currentOnEvent?.invoke(LottieEvent.Finish) }
140
- }
141
- }
142
-
143
- LottieAnimation(
144
- composition = composition,
145
- progress = { lottieState.progress },
146
- dynamicProperties = if (tintColor != null) dynamicProperties else null,
147
- modifier = modifier
148
- )
149
- }
150
-
151
- actual fun NativePaint.setColor(color: Color){
152
- this.color = color.toArgb()
153
- }
@@ -1,6 +0,0 @@
1
- package vn.momo.kits.platform
2
-
3
- import androidx.compose.runtime.Composable
4
-
5
- @Composable
6
- internal actual fun rememberReservedRegions(): ReservedRegions = ReservedRegions()
@@ -1,110 +0,0 @@
1
- package vn.momo.kits.application
2
-
3
- import androidx.compose.runtime.Immutable
4
- import androidx.compose.runtime.staticCompositionLocalOf
5
- import vn.momo.kits.components.TrustBannerData
6
-
7
- @Immutable
8
- data class FeatureFlags(
9
- val showBaseLineDebug: Boolean? = false,
10
- )
11
-
12
- @Immutable
13
- data class DesignSystemConfig(
14
- val trustBanner: TrustBannerData? = null,
15
- val headerBar: String? = null,
16
- val headerGradient: String? = null,
17
- )
18
-
19
- @Immutable
20
- data class MiniAppContext(
21
- val appIcon: String = "",
22
- val appName: Any? = null,
23
- val appId: String = "",
24
- val appCode: String = "",
25
- val description: Any? = null,
26
- val support: Map<String, Any?> = emptyMap(),
27
- val toolkitConfig: Map<String, Any?> = emptyMap(),
28
- val providerId: String = "",
29
- val permissions: List<Map<String, Any>>? = emptyList(),
30
- val features: FeatureFlags? = null,
31
- val scaleSizeMaxRate: Float? = null,
32
- val userScaleRate: Float? = null,
33
- val useOSScaleRate: Boolean? = null,
34
- ) {
35
- companion object {
36
-
37
- fun toMap(context: MiniAppContext?): Map<String, Any?> = mapOf(
38
- "icon" to (context?.appIcon ?: ""),
39
- "name" to context?.appName,
40
- "appId" to (context?.appId ?: ""),
41
- "code" to (context?.appCode ?: ""),
42
- "description" to (context?.description ?: ""),
43
- "support" to (context?.support ?: emptyMap()),
44
- "toolkitConfig" to (context?.toolkitConfig ?: emptyMap()),
45
- "providerId" to (context?.providerId ?: ""),
46
- "permissions" to (context?.permissions ?: emptyList()),
47
- )
48
-
49
- fun merge(parent: MiniAppContext?, child: MiniAppContext?): MiniAppContext? {
50
- if (parent == null && child == null) return null
51
- if (parent == null) return child
52
- if (child == null) return parent
53
-
54
- return MiniAppContext(
55
- appIcon = parent.appIcon.ifBlank { child.appIcon },
56
- appName = parent.appName ?: child.appName,
57
- appId = parent.appId.ifBlank { child.appId },
58
- appCode = parent.appCode.ifBlank { child.appCode },
59
- description = parent.description ?: child.description,
60
- support = mergeMaps(parent.support, child.support),
61
- toolkitConfig = mergeMaps(parent.toolkitConfig, child.toolkitConfig),
62
- providerId = parent.providerId.ifBlank { child.providerId },
63
- permissions = if (!parent.permissions.isNullOrEmpty()) parent.permissions else child.permissions,
64
- features = mergeFeatureFlags(parent.features, child.features),
65
- scaleSizeMaxRate = parent.scaleSizeMaxRate ?: child.scaleSizeMaxRate,
66
- userScaleRate = parent.userScaleRate ?: child.userScaleRate,
67
- useOSScaleRate = parent.useOSScaleRate ?: child.useOSScaleRate,
68
- )
69
- }
70
-
71
- private fun mergeMaps(parent: Map<String, Any?>, child: Map<String, Any?>): Map<String, Any?> {
72
- return child + parent
73
- }
74
-
75
- private fun mergeFeatureFlags(parent: FeatureFlags?, child: FeatureFlags?): FeatureFlags? {
76
- if (parent == null && child == null) return null
77
- if (parent == null) return child
78
- if (child == null) return parent
79
-
80
- return FeatureFlags(
81
- showBaseLineDebug = parent.showBaseLineDebug ?: child.showBaseLineDebug
82
- )
83
- }
84
- }
85
- }
86
-
87
- @Immutable
88
- data class ComponentInformation(
89
- val componentName: String? = null,
90
- val componentId: String? = null,
91
- val params: Map<String,Any?>? = null,
92
- val action: String? = null
93
- )
94
-
95
- var IsShowBaseLineDebug = false
96
-
97
- val LocalContext = staticCompositionLocalOf<MiniAppContext?> {
98
- null
99
- }
100
-
101
- val LocalComponentInformation = staticCompositionLocalOf<ComponentInformation?> {
102
- null
103
- }
104
-
105
- val LocalDesignSystemConfig = staticCompositionLocalOf<DesignSystemConfig?> {
106
- null
107
- }
108
-
109
- @Deprecated("Max font scale is fixed at MAX_FONT_SCALE (1.5); this CompositionLocal is no longer read.")
110
- val ScaleSizeMaxRate = staticCompositionLocalOf<Float?> { null }
@@ -1,62 +0,0 @@
1
- package vn.momo.kits.application
2
-
3
- import androidx.compose.runtime.Immutable
4
- import androidx.compose.runtime.getValue
5
- import androidx.compose.runtime.mutableStateOf
6
- import androidx.compose.runtime.setValue
7
- import kotlinx.coroutines.CoroutineScope
8
- import kotlinx.coroutines.Dispatchers
9
- import kotlinx.coroutines.Job
10
- import kotlinx.coroutines.SupervisorJob
11
- import kotlinx.coroutines.flow.Flow
12
- import kotlinx.coroutines.flow.MutableStateFlow
13
- import kotlinx.coroutines.flow.StateFlow
14
- import kotlinx.coroutines.flow.asStateFlow
15
- import kotlinx.coroutines.launch
16
-
17
- @Immutable
18
- data class DesignSystemKitsConfigs(
19
- val userScaleRate: Float = 1f,
20
- val useOSScaleRate: Boolean = true,
21
- val isWhiteList: Boolean = false,
22
- val designSystemConfig: DesignSystemConfig? = null,
23
- )
24
-
25
- // The kit is sandboxed from the host's storage/config, so the host implements this and hands it to init().
26
- interface DesignSystemKitsSource {
27
- // Sync read: seeds the kit before the first frame, so there is no default-then-real flicker.
28
- fun getConfigs(): DesignSystemKitsConfigs
29
-
30
- val configsFlow: Flow<DesignSystemKitsConfigs>
31
- }
32
-
33
- // App-wide design-system inputs (font scale, whitelist, remote config). scaleSize(), defaultTheme and
34
- // NavigationContainer fall back to these when no MiniAppContext / LocalDesignSystemConfig is provided.
35
- object DesignSystemKits {
36
- private val scope = CoroutineScope(SupervisorJob() + Dispatchers.Main)
37
- private var observeJob: Job? = null
38
-
39
- // Snapshot state so Compose readers recompose (including non-composable getters like defaultTheme);
40
- // the StateFlow is for non-Compose observers, e.g. the host's SwiftUI bridge, where Compose's
41
- // global snapshot apply loop may never have started.
42
- private var currentConfigs by mutableStateOf(DesignSystemKitsConfigs())
43
- private val mutableConfigsFlow = MutableStateFlow(currentConfigs)
44
- val configsFlow: StateFlow<DesignSystemKitsConfigs> = mutableConfigsFlow.asStateFlow()
45
-
46
- // Idempotent: a repeated call (e.g. Activity re-creation) replaces the previous observer.
47
- fun init(source: DesignSystemKitsSource) {
48
- observeJob?.cancel()
49
- setConfigs(source.getConfigs())
50
- observeJob = scope.launch {
51
- source.configsFlow.collect { setConfigs(it) }
52
- }
53
- }
54
-
55
- // While init() is observing a source, its next emission overrides a value set here.
56
- fun setConfigs(configs: DesignSystemKitsConfigs) {
57
- currentConfigs = configs
58
- mutableConfigsFlow.value = configs
59
- }
60
-
61
- fun getConfigs(): DesignSystemKitsConfigs = currentConfigs
62
- }