@momo-kits/native-kits 0.161.3-beta.1 → 0.162.1-beta.1-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 (151) hide show
  1. package/.claude/settings.local.json +32 -0
  2. package/build.gradle.kts +11 -0
  3. package/compose/build.gradle.kts +189 -0
  4. package/compose/build.gradle.kts.backup +189 -0
  5. package/compose/compose.podspec +47 -0
  6. package/compose/src/androidMain/kotlin/vn/momo/kits/navigation/ScrollToTop.android.kt +6 -0
  7. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +123 -0
  8. package/compose/src/commonMain/composeResources/font/momosignature.otf +0 -0
  9. package/compose/src/commonMain/composeResources/font/momotrustdisplay.otf +0 -0
  10. package/compose/src/commonMain/composeResources/font/sfprotext_black.otf +0 -0
  11. package/compose/src/commonMain/composeResources/font/sfprotext_black.ttf +0 -0
  12. package/compose/src/commonMain/composeResources/font/sfprotext_bold.ttf +0 -0
  13. package/compose/src/commonMain/composeResources/font/sfprotext_heavy.ttf +0 -0
  14. package/compose/src/commonMain/composeResources/font/sfprotext_light.ttf +0 -0
  15. package/compose/src/commonMain/composeResources/font/sfprotext_medium.ttf +0 -0
  16. package/compose/src/commonMain/composeResources/font/sfprotext_regular.ttf +0 -0
  17. package/compose/src/commonMain/composeResources/font/sfprotext_semibold.ttf +0 -0
  18. package/compose/src/commonMain/composeResources/font/sfprotext_thin.otf +0 -0
  19. package/compose/src/commonMain/composeResources/font/sfprotext_thin.ttf +0 -0
  20. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.otf +0 -0
  21. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.ttf +0 -0
  22. package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +52 -0
  23. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +109 -0
  24. package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +183 -0
  25. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +207 -0
  26. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +39 -0
  27. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +86 -0
  28. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +76 -0
  29. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +76 -0
  30. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +294 -0
  31. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +33 -0
  32. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +826 -0
  33. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +109 -0
  34. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +378 -0
  35. package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +69 -0
  36. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Avatar.kt +157 -0
  37. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +80 -0
  38. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +32 -0
  39. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +338 -0
  40. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BaselineView.kt +175 -0
  41. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +354 -0
  42. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Carousel.kt +113 -0
  43. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +89 -0
  44. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +128 -0
  45. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Collapse.kt +209 -0
  46. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +543 -0
  47. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +23 -0
  48. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +76 -0
  49. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +140 -0
  50. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +188 -0
  51. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +112 -0
  52. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +477 -0
  53. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +114 -0
  54. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +214 -0
  55. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +240 -0
  56. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +216 -0
  57. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +259 -0
  58. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +180 -0
  59. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +343 -0
  60. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Loader.kt +108 -0
  61. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +56 -0
  62. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +41 -0
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +84 -0
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +40 -0
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +331 -0
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +97 -0
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ProgressInfo.kt +310 -0
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +59 -0
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Rating.kt +87 -0
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +90 -0
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Slider.kt +323 -0
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +217 -0
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Steps.kt +473 -0
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/components/SuggestAction.kt +122 -0
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Swipe.kt +199 -0
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +91 -0
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +470 -0
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +88 -0
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +131 -0
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +203 -0
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +498 -0
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +177 -0
  83. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Uploader.kt +182 -0
  84. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +193 -0
  85. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +29 -0
  86. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +234 -0
  87. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +188 -0
  88. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +306 -0
  89. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +12 -0
  90. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +16 -0
  91. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +188 -0
  92. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +270 -0
  93. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +2 -0
  94. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +35 -0
  95. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +2 -0
  96. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +52 -0
  97. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +66 -0
  98. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +11 -0
  99. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +48 -0
  100. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +51 -0
  101. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +253 -0
  102. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +129 -0
  103. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +93 -0
  104. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +145 -0
  105. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +346 -0
  106. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ScrollToTop.kt +8 -0
  107. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +556 -0
  108. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +155 -0
  109. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +223 -0
  110. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +86 -0
  111. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +169 -0
  112. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +319 -0
  113. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +81 -0
  114. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +309 -0
  115. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +34 -0
  116. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +360 -0
  117. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +132 -0
  118. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/tracking/ScreenTracker.kt +128 -0
  119. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/ComposeLottieAnimation.kt +70 -0
  120. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +58 -0
  121. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Deprecated.kt +107 -0
  122. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +1329 -0
  123. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +65 -0
  124. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Tracking.kt +15 -0
  125. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +105 -0
  126. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/ScrollToTop.ios.kt +32 -0
  127. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +184 -0
  128. package/gradle/libs.versions.toml +67 -0
  129. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  130. package/gradle/wrapper/gradle-wrapper.properties +8 -0
  131. package/gradle.properties +26 -0
  132. package/gradlew +252 -0
  133. package/gradlew.bat +94 -0
  134. package/ios/Application/ApplicationEnvironment.swift +2 -6
  135. package/ios/Input/Input.swift +19 -19
  136. package/ios/Input/InputPhoneNumber.swift +17 -17
  137. package/ios/Typography/Text.swift +19 -14
  138. package/ios/Typography/Typography.swift +22 -1
  139. package/local.properties +8 -0
  140. package/package.json +1 -1
  141. package/publish.sh +134 -71
  142. package/settings.gradle.kts +64 -0
  143. package/example/ios/Example.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
  144. package/example/ios/Example.xcworkspace/xcuserdata/huynhdung.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  145. package/example/ios/Example.xcworkspace/xcuserdata/huynhdung.xcuserdatad/xcschemes/xcschememanagement.plist +0 -5
  146. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/MoMoUIKits.xcscheme +0 -58
  147. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/Pods-Example.xcscheme +0 -58
  148. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/SDWebImage.xcscheme +0 -58
  149. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/SDWebImageSwiftUI.xcscheme +0 -58
  150. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/SkeletonUI.xcscheme +0 -58
  151. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/xcschememanagement.plist +0 -46
@@ -0,0 +1,32 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(yarn react-native:*)",
5
+ "Read(//Users/phuc/.claude/skills/ai-skill-generator/**)",
6
+ "Bash(python3 scripts/install_skill.py --update)",
7
+ "Bash(cd /Users/phuc/momo-kits/.claude/skills/design-system-kits && mkdir -p .claude/skills/design-system-kits && mv SKILL.md README.md references .claude/skills/design-system-kits/)",
8
+ "Bash(mv .claude/skills/design-system-kits/* . && rmdir .claude/skills/design-system-kits && rmdir .claude/skills)",
9
+ "Bash(python3 scripts/migrate_screen.py --dry-run sample/shared/src/commonMain/kotlin/screens/ScreenUsage.kt)",
10
+ "Bash(python3 scripts/migrate_screen.py --dry-run sample/shared/src/commonMain/kotlin/screens/AnimatedHeaderUsage.kt sample/shared/src/commonMain/kotlin/screens/SnackBarScreenUsage.kt 2>&1)",
11
+ "Bash(python3 scripts/migrate_screen.py --dry-run sample/shared/src/commonMain/kotlin/screens/SnackBarScreenUsage.kt)",
12
+ "Bash(cp sample/shared/src/commonMain/kotlin/screens/SnackBarScreenUsage.kt /tmp/SnackBarScreenUsage.kt.orig && python3 scripts/migrate_screen.py sample/shared/src/commonMain/kotlin/screens/SnackBarScreenUsage.kt)",
13
+ "Bash(cp -r /Users/phuc/.claude/skills/migrate-screen-to-navigation-container /Users/phuc/momo-native-kits-2/momo-native-kits/.claude/skills/migrate-screen-to-navigation-container)",
14
+ "Bash(mkdir -p /Users/phuc/momo-native-kits-2/momo-native-kits/.claude/skills/migrate-screen-to-navigation-container/scripts && mv /Users/phuc/momo-native-kits-2/momo-native-kits/scripts/migrate_screen.py /Users/phuc/momo-native-kits-2/momo-native-kits/.claude/skills/migrate-screen-to-navigation-container/scripts/migrate_screen.py)",
15
+ "Bash(python3 .claude/skills/migrate-screen-to-navigation-container/scripts/generate_eval_cases.py)",
16
+ "Bash(SKILL=\".claude/skills/migrate-screen-to-navigation-container\" && python3 $SKILL/scripts/migrate_screen.py $SKILL/eval/input/ 2>&1 | tail -20)",
17
+ "Bash(SKILL=\".claude/skills/migrate-screen-to-navigation-container\" && cp -r $SKILL/eval/input $SKILL/eval/output && python3 $SKILL/scripts/migrate_screen.py $SKILL/eval/output/ 2>&1 | tail -20)",
18
+ "Bash(SKILL=\".claude/skills/migrate-screen-to-navigation-container\" && cp -r $SKILL/eval/input $SKILL/eval/output && python3 $SKILL/scripts/migrate_screen.py $SKILL/eval/output/ 2>&1 | tail -25)",
19
+ "Bash(SKILL=\".claude/skills/migrate-screen-to-navigation-container\" && cp -r \"$SKILL/eval/input\" \"$SKILL/eval/output\" && python3 \"$SKILL/scripts/migrate_screen.py\" \"$SKILL/eval/output/\" 2>&1 | tail -25)",
20
+ "Bash(SKILL=\"/Users/phuc/momo-native-kits-2/momo-native-kits/.claude/skills/migrate-screen-to-navigation-container\"\ncp -r \"$SKILL/eval/input\" \"$SKILL/eval/output\"\npython3 \"$SKILL/scripts/migrate_screen.py\" \"$SKILL/eval/output/\" 2>&1 | tail -25)",
21
+ "Bash(cd \"/Users/phuc/momo-native-kits-2/momo-native-kits/.claude/skills/migrate-screen-to-navigation-container\" && python3 scripts/eval_migration.py 2>&1 | tail -80)",
22
+ "Bash(cd \"/Users/phuc/momo-native-kits-2/momo-native-kits/.claude/skills/migrate-screen-to-navigation-container\" && python3 scripts/eval_migration.py 2>&1 | head -30)",
23
+ "Bash(SKILL=\"/Users/phuc/momo-native-kits-2/momo-native-kits/.claude/skills/migrate-screen-to-navigation-container\" && rm -rf \"$SKILL/eval/output\" && cp -r \"$SKILL/eval/input\" \"$SKILL/eval/output\" && python3 \"$SKILL/scripts/migrate_screen.py\" \"$SKILL/eval/output/\" 2>&1 | tail -5)",
24
+ "Bash(SKILL=\"/Users/phuc/momo-native-kits-2/momo-native-kits/.claude/skills/migrate-screen-to-navigation-container\"; rm -rf \"${SKILL}/eval/output\"; cp -r \"${SKILL}/eval/input\" \"${SKILL}/eval/output\" && python3 \"${SKILL}/scripts/migrate_screen.py\" \"${SKILL}/eval/output/\" 2>&1 | tail -5)",
25
+ "Bash(rm -rf \"/Users/phuc/momo-native-kits-2/momo-native-kits/.claude/skills/migrate-screen-to-navigation-container/eval/output\" && cp -r \"/Users/phuc/momo-native-kits-2/momo-native-kits/.claude/skills/migrate-screen-to-navigation-container/eval/input\" \"/Users/phuc/momo-native-kits-2/momo-native-kits/.claude/skills/migrate-screen-to-navigation-container/eval/output\" && python3 \"/Users/phuc/momo-native-kits-2/momo-native-kits/.claude/skills/migrate-screen-to-navigation-container/scripts/migrate_screen.py\" \"/Users/phuc/momo-native-kits-2/momo-native-kits/.claude/skills/migrate-screen-to-navigation-container/eval/output/\" 2>&1 | tail -5)",
26
+ "Bash(python3 \"/Users/phuc/momo-native-kits-2/momo-native-kits/.claude/skills/migrate-screen-to-navigation-container/scripts/eval_migration.py\" 2>&1 | head -35)",
27
+ "Bash(python3 \"/Users/phuc/momo-native-kits-2/momo-native-kits/.claude/skills/migrate-screen-to-navigation-container/scripts/eval_migration.py\" 2>&1 | grep -E \"^=|Files eval|Passed|Failed|A0[0-9]|Per-Group|Failures\" | head -40)",
28
+ "Bash(find /Users/phuc/momo-kits -name \"*.kt\" 2>/dev/null | head -20)",
29
+ "Bash(find /Users/phuc -name \"*PaymentConfirmScreenFull*\" 2>/dev/null | head -10)"
30
+ ]
31
+ }
32
+ }
@@ -0,0 +1,11 @@
1
+ plugins {
2
+ // this is necessary to avoid the plugins to be loaded multiple times
3
+ // in each subproject's classloader
4
+ alias(libs.plugins.android.application) apply false
5
+ alias(libs.plugins.android.library) apply false
6
+ alias(libs.plugins.compose) apply false
7
+ alias(libs.plugins.kotlin.compose.compiler) apply false
8
+ alias(libs.plugins.jetbrains.kotlin.multiplatform) apply false
9
+ alias(libs.plugins.jetbrains.kotlin.serialization) apply false
10
+ alias(libs.plugins.vanniktech.mavenPublish) apply false
11
+ }
@@ -0,0 +1,189 @@
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 = "0.161.0-debug"
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.utils.Deprecated.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
+ }
81
+ androidMain.dependencies {
82
+ implementation(libs.ktor.client.okhttp)
83
+ implementation(libs.airbnb.lottie)
84
+ }
85
+ iosMain.dependencies {
86
+ implementation(libs.ktor.client.darwin)
87
+ }
88
+ }
89
+ }
90
+
91
+ android {
92
+ namespace = "vn.momo.kits.kits"
93
+ compileSdk = 36
94
+ compileOptions {
95
+ sourceCompatibility = JavaVersion.VERSION_17
96
+ targetCompatibility = JavaVersion.VERSION_17
97
+ }
98
+ defaultConfig {
99
+ minSdk = 24
100
+ }
101
+ }
102
+
103
+ dependencies {
104
+ }
105
+
106
+ repositories {
107
+ google {
108
+ mavenContent {
109
+ includeGroupAndSubgroups("androidx")
110
+ includeGroupAndSubgroups("com.android")
111
+ includeGroupAndSubgroups("com.google")
112
+ }
113
+ }
114
+ mavenCentral()
115
+ maven { url = uri("https://maven.pkg.jetbrains.space/public/p/compose/dev") }
116
+ maven {
117
+ url = uri("https://gitlab.mservice.com.vn/api/v4/projects/5400/packages/maven")
118
+ credentials {username = "download_packages"; password = "gldt-bjDqLpU_sPcHDuXau2ws" }
119
+ }
120
+ maven {
121
+ url = uri("https://artifacts.mservice.com.vn/repository/maven-momo-app/")
122
+ credentials {
123
+ username = "viewer"
124
+ password = "viewer"
125
+ }
126
+ isAllowInsecureProtocol = true
127
+ }
128
+ }
129
+
130
+ compose {
131
+ resources {
132
+ publicResClass = true
133
+ packageOfResClass = "vn.momo.uikits.resources"
134
+ generateResClass = always
135
+ }
136
+ }
137
+
138
+ publishing {
139
+ repositories {
140
+ maven {
141
+ name = "${gitlabRepo}Packages"
142
+ credentials {
143
+ username = gitlabUser
144
+ password = gitlabKey
145
+ }
146
+ url = uri(gitlabUrl)
147
+ }
148
+ }
149
+ }
150
+
151
+ mavenPublishing {
152
+ configure(
153
+ KotlinMultiplatform(
154
+ javadocJar = JavadocJar.Empty(),
155
+ sourcesJar = true,
156
+ androidVariantsToPublish = listOf("release")
157
+ )
158
+ )
159
+
160
+ repositories {
161
+ maven {
162
+ name = "${gitlabRepo}Packages"
163
+ credentials { username = gitlabUser; password = gitlabKey }
164
+ url = uri(gitlabUrl)
165
+ }
166
+ }
167
+
168
+ coordinates(gitlabGroup, gitlabArtifactId, gitlabVersion)
169
+
170
+ pom {
171
+ name = "$gitlabName Klib"
172
+ description = gitlabName
173
+ url = "https://gitlab.mservice.com.vn"
174
+ licenses {
175
+ license {
176
+ name = "The Apache License, Version 2.0"
177
+ url = "https://www.apache.org/licenses/LICENSE-2.0.txt"
178
+ distribution = "https://www.apache.org/licenses/LICENSE-2.0.txt"
179
+ }
180
+ }
181
+ developers {
182
+ developer {
183
+ id = "kotlin-hands-on"
184
+ name = "Kotlin Developer Advocate"
185
+ url = "https://github.com/kotlin-hands-on/"
186
+ }
187
+ }
188
+ }
189
+ }
@@ -0,0 +1,189 @@
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 = "0.161.0-debug"
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.utils.Deprecated.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
+ }
81
+ androidMain.dependencies {
82
+ implementation(libs.ktor.client.okhttp)
83
+ implementation(libs.airbnb.lottie)
84
+ }
85
+ iosMain.dependencies {
86
+ implementation(libs.ktor.client.darwin)
87
+ }
88
+ }
89
+ }
90
+
91
+ android {
92
+ namespace = "vn.momo.kits.kits"
93
+ compileSdk = 36
94
+ compileOptions {
95
+ sourceCompatibility = JavaVersion.VERSION_17
96
+ targetCompatibility = JavaVersion.VERSION_17
97
+ }
98
+ defaultConfig {
99
+ minSdk = 24
100
+ }
101
+ }
102
+
103
+ dependencies {
104
+ }
105
+
106
+ repositories {
107
+ google {
108
+ mavenContent {
109
+ includeGroupAndSubgroups("androidx")
110
+ includeGroupAndSubgroups("com.android")
111
+ includeGroupAndSubgroups("com.google")
112
+ }
113
+ }
114
+ mavenCentral()
115
+ maven { url = uri("https://maven.pkg.jetbrains.space/public/p/compose/dev") }
116
+ maven {
117
+ url = uri("https://gitlab.mservice.com.vn/api/v4/projects/5400/packages/maven")
118
+ credentials {username = "download_packages"; password = "gldt-bjDqLpU_sPcHDuXau2ws" }
119
+ }
120
+ maven {
121
+ url = uri("https://artifacts.mservice.com.vn/repository/maven-momo-app/")
122
+ credentials {
123
+ username = "viewer"
124
+ password = "viewer"
125
+ }
126
+ isAllowInsecureProtocol = true
127
+ }
128
+ }
129
+
130
+ compose {
131
+ resources {
132
+ publicResClass = true
133
+ packageOfResClass = "vn.momo.uikits.resources"
134
+ generateResClass = always
135
+ }
136
+ }
137
+
138
+ publishing {
139
+ repositories {
140
+ maven {
141
+ name = "${gitlabRepo}Packages"
142
+ credentials {
143
+ username = gitlabUser
144
+ password = gitlabKey
145
+ }
146
+ url = uri(gitlabUrl)
147
+ }
148
+ }
149
+ }
150
+
151
+ mavenPublishing {
152
+ configure(
153
+ KotlinMultiplatform(
154
+ javadocJar = JavadocJar.Empty(),
155
+ sourcesJar = true,
156
+ androidVariantsToPublish = listOf("release")
157
+ )
158
+ )
159
+
160
+ repositories {
161
+ maven {
162
+ name = "${gitlabRepo}Packages"
163
+ credentials { username = gitlabUser; password = gitlabKey }
164
+ url = uri(gitlabUrl)
165
+ }
166
+ }
167
+
168
+ coordinates(gitlabGroup, gitlabArtifactId, gitlabVersion)
169
+
170
+ pom {
171
+ name = "$gitlabName Klib"
172
+ description = gitlabName
173
+ url = "https://gitlab.mservice.com.vn"
174
+ licenses {
175
+ license {
176
+ name = "The Apache License, Version 2.0"
177
+ url = "https://www.apache.org/licenses/LICENSE-2.0.txt"
178
+ distribution = "https://www.apache.org/licenses/LICENSE-2.0.txt"
179
+ }
180
+ }
181
+ developers {
182
+ developer {
183
+ id = "kotlin-hands-on"
184
+ name = "Kotlin Developer Advocate"
185
+ url = "https://github.com/kotlin-hands-on/"
186
+ }
187
+ }
188
+ }
189
+ }
@@ -0,0 +1,47 @@
1
+ Pod::Spec.new do |spec|
2
+ spec.name = 'compose'
3
+ spec.version = '0.161.0-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
@@ -0,0 +1,6 @@
1
+ package vn.momo.kits.navigation
2
+
3
+ import androidx.compose.runtime.Composable
4
+
5
+ @Composable
6
+ internal actual fun RegisterScrollToTop(callback: (() -> Unit)?) = Unit
@@ -0,0 +1,123 @@
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.getValue
12
+ import androidx.compose.ui.Modifier
13
+ import androidx.compose.ui.graphics.Color
14
+ import androidx.compose.ui.graphics.NativePaint
15
+ import androidx.compose.ui.graphics.toArgb
16
+ import androidx.compose.ui.platform.LocalConfiguration
17
+ import androidx.compose.ui.semantics.contentDescription
18
+ import androidx.compose.ui.semantics.semantics
19
+ import androidx.compose.ui.unit.Dp
20
+ import androidx.compose.ui.unit.dp
21
+ import com.airbnb.lottie.LottieProperty
22
+ import com.airbnb.lottie.compose.LottieAnimation
23
+ import com.airbnb.lottie.compose.LottieCompositionSpec
24
+ import com.airbnb.lottie.compose.LottieConstants
25
+ import com.airbnb.lottie.compose.rememberLottieComposition
26
+ import com.airbnb.lottie.compose.rememberLottieDynamicProperties
27
+ import com.airbnb.lottie.compose.rememberLottieDynamicProperty
28
+ import vn.momo.kits.const.AppNavigationBar
29
+ import vn.momo.kits.const.AppStatusBar
30
+ import vn.momo.kits.utils.readJson
31
+ import androidx.activity.compose.BackHandler as AndroidBackHandler
32
+
33
+ actual fun getPlatformName(): String = "Android"
34
+
35
+ @Composable
36
+ actual fun getScreenDimensions(): ScreenDimension {
37
+ val config = LocalConfiguration.current
38
+ return ScreenDimension(
39
+ config.screenWidthDp, config.screenHeightDp
40
+ )
41
+ }
42
+
43
+ actual fun NativePaint.setMaskFilter(blurRadius: Float) {
44
+ this.maskFilter = BlurMaskFilter(blurRadius, BlurMaskFilter.Blur.NORMAL)
45
+ }
46
+
47
+ @SuppressLint("InternalInsetResource")
48
+ @Composable
49
+ actual fun getStatusBarHeight(): Dp {
50
+ val resourceId = Resources.getSystem().getIdentifier(
51
+ "status_bar_height",
52
+ "dimen",
53
+ "android"
54
+ )
55
+ return if(resourceId > 0) Resources.getSystem().getDimensionPixelSize(resourceId).dp else 0.dp
56
+ }
57
+
58
+ @Composable
59
+ actual fun BackHandler(enabled: Boolean, onBack: () -> Unit) {
60
+ AndroidBackHandler(enabled = enabled, onBack = onBack)
61
+ }
62
+
63
+ @Composable
64
+ actual fun ProvideNavigationEventDispatcherOwner(content: @Composable () -> Unit) {
65
+ content()
66
+ }
67
+
68
+ @Composable
69
+ actual fun getScreenHeight(): Dp {
70
+ return getScreenDimensions().height.dp + if (getOSVersion() >= 35) 0.dp else AppStatusBar.current + AppNavigationBar.current
71
+ }
72
+
73
+ actual fun getOSVersion(): OSVersion = OSVersion.Android(sdk = Build.VERSION.SDK_INT)
74
+
75
+ @Composable
76
+ actual fun LottieAnimation(
77
+ path: String,
78
+ tintColor: Color?,
79
+ bgColor: Color?,
80
+ placedAsOverlay: Boolean,
81
+ modifier: Modifier,
82
+ useCompose: Boolean
83
+ ) {
84
+ if (useCompose) {
85
+ ComposeLottieAnimation(path, tintColor, bgColor, modifier)
86
+ return
87
+ }
88
+
89
+ val json = readJson(path)
90
+
91
+ if (json.isEmpty()) {
92
+ Box(modifier)
93
+ return
94
+ }
95
+
96
+ val composition by rememberLottieComposition(
97
+ LottieCompositionSpec.JsonString(json)
98
+ )
99
+
100
+ val colorFilter = PorterDuffColorFilter(
101
+ tintColor?.toArgb() ?: Color.White.toArgb(),
102
+ PorterDuff.Mode.SRC_ATOP
103
+ )
104
+
105
+ val dynamicProperties = rememberLottieDynamicProperties(
106
+ rememberLottieDynamicProperty(
107
+ property = LottieProperty.COLOR_FILTER,
108
+ value = colorFilter,
109
+ keyPath = arrayOf("**")
110
+ )
111
+ )
112
+
113
+ LottieAnimation(
114
+ composition = composition,
115
+ iterations = LottieConstants.IterateForever,
116
+ dynamicProperties = if (tintColor != null) dynamicProperties else null,
117
+ modifier = modifier
118
+ )
119
+ }
120
+
121
+ actual fun NativePaint.setColor(color: Color){
122
+ this.color = color.toArgb()
123
+ }