@momo-kits/native-kits 0.152.4-beta.9 → 0.152.4-klib.10

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 (118) hide show
  1. package/README.md +175 -5
  2. package/ios/Badge/Badge.swift +0 -6
  3. package/ios/Badge/BadgeRibbon.swift +77 -9
  4. package/ios/Button/Button.swift +7 -7
  5. package/ios/native-kits.podspec +18 -16
  6. package/package.json +2 -4
  7. package/CODE_OF_CONDUCT.md +0 -133
  8. package/CONTRIBUTING.md +0 -114
  9. package/LICENSE +0 -20
  10. package/build.gradle.kts +0 -32
  11. package/compose/MoMoComposeKits.podspec +0 -54
  12. package/compose/build.gradle.kts +0 -149
  13. package/compose/src/androidMain/AndroidManifest.xml +0 -2
  14. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +0 -105
  15. package/compose/src/commonMain/composeResources/files/lottie_circle_loader.json +0 -1
  16. package/compose/src/commonMain/composeResources/font/momosignature.otf +0 -0
  17. package/compose/src/commonMain/composeResources/font/momotrustdisplay.otf +0 -0
  18. package/compose/src/commonMain/composeResources/font/sfprotext_black.otf +0 -0
  19. package/compose/src/commonMain/composeResources/font/sfprotext_black.ttf +0 -0
  20. package/compose/src/commonMain/composeResources/font/sfprotext_bold.ttf +0 -0
  21. package/compose/src/commonMain/composeResources/font/sfprotext_heavy.ttf +0 -0
  22. package/compose/src/commonMain/composeResources/font/sfprotext_light.ttf +0 -0
  23. package/compose/src/commonMain/composeResources/font/sfprotext_medium.ttf +0 -0
  24. package/compose/src/commonMain/composeResources/font/sfprotext_regular.ttf +0 -0
  25. package/compose/src/commonMain/composeResources/font/sfprotext_semibold.ttf +0 -0
  26. package/compose/src/commonMain/composeResources/font/sfprotext_thin.otf +0 -0
  27. package/compose/src/commonMain/composeResources/font/sfprotext_thin.ttf +0 -0
  28. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.otf +0 -0
  29. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.ttf +0 -0
  30. package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +0 -57
  31. package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +0 -201
  32. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +0 -222
  33. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +0 -48
  34. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +0 -86
  35. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +0 -76
  36. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +0 -76
  37. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +0 -306
  38. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +0 -33
  39. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +0 -715
  40. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +0 -214
  41. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +0 -236
  42. package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +0 -69
  43. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +0 -77
  44. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +0 -27
  45. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +0 -334
  46. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +0 -345
  47. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +0 -90
  48. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +0 -131
  49. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +0 -543
  50. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +0 -23
  51. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +0 -58
  52. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +0 -143
  53. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +0 -179
  54. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +0 -111
  55. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +0 -384
  56. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +0 -160
  57. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +0 -234
  58. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +0 -223
  59. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +0 -232
  60. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +0 -236
  61. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +0 -228
  62. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +0 -364
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +0 -50
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +0 -34
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +0 -85
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +0 -33
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +0 -338
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +0 -95
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +0 -64
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +0 -89
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +0 -91
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +0 -86
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +0 -84
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +0 -208
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +0 -172
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +0 -199
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +0 -29
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +0 -237
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +0 -191
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +0 -306
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +0 -12
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +0 -13
  83. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +0 -191
  84. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +0 -258
  85. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +0 -2
  86. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +0 -35
  87. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +0 -2
  88. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +0 -59
  89. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +0 -68
  90. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +0 -11
  91. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +0 -49
  92. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +0 -51
  93. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +0 -232
  94. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +0 -111
  95. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +0 -94
  96. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +0 -159
  97. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +0 -232
  98. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ScaleSizeScope.kt +0 -17
  99. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +0 -459
  100. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +0 -169
  101. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +0 -216
  102. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +0 -86
  103. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +0 -180
  104. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +0 -251
  105. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +0 -80
  106. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +0 -306
  107. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +0 -31
  108. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +0 -385
  109. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +0 -38
  110. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +0 -1329
  111. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +0 -62
  112. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +0 -88
  113. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +0 -144
  114. package/gradle.properties +0 -19
  115. package/gradlew +0 -240
  116. package/gradlew.bat +0 -91
  117. package/ios/Theme.md +0 -18
  118. package/settings.gradle.kts +0 -25
package/LICENSE DELETED
@@ -1,20 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2022 dung.huynh1
4
- Permission is hereby granted, free of charge, to any person obtaining a copy
5
- of this software and associated documentation files (the "Software"), to deal
6
- in the Software without restriction, including without limitation the rights
7
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
- copies of the Software, and to permit persons to whom the Software is
9
- furnished to do so, subject to the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be included in all
12
- copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
- SOFTWARE.
package/build.gradle.kts DELETED
@@ -1,32 +0,0 @@
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.jetbrains.kotlin.jvm) apply false
5
- alias(libs.plugins.jetbrains.kotlin.multiplatform) apply false
6
- alias(libs.plugins.jetbrains.kotlin.android) apply false
7
- alias(libs.plugins.jetbrains.kotlin.serialization) apply false
8
- alias(libs.plugins.kotlin.compose.compiler)
9
- alias(libs.plugins.compose) apply false
10
- alias(libs.plugins.android.library) apply false
11
- alias(libs.plugins.android.application) apply false
12
- }
13
-
14
- buildscript {
15
- repositories {
16
- maven("https://storage.googleapis.com/r8-releases/raw")
17
- }
18
-
19
- dependencies {
20
- classpath(libs.r8)
21
- }
22
- }
23
-
24
- subprojects {
25
-
26
- }
27
-
28
- tasks.register<Copy>("setUpGitHooks") {
29
- group = "help"
30
- from("$rootDir/.hooks")
31
- into("$rootDir/.git/hooks")
32
- }
@@ -1,54 +0,0 @@
1
- Pod::Spec.new do |spec|
2
- spec.name = 'MoMoComposeKits'
3
- spec.version = '0.0.1'
4
- spec.homepage = 'MoMoComposeKits'
5
- spec.source = { :http=> ''}
6
- spec.authors = 'M_SERVICE'
7
- spec.license = ''
8
- spec.summary = 'MoMoComposeKits'
9
- spec.vendored_frameworks = 'build/cocoapods/framework/compose.framework'
10
- spec.libraries = 'c++'
11
- spec.ios.deployment_target = '13.0'
12
- spec.dependency 'lottie-ios', '4.4.3'
13
-
14
- if !Dir.exist?('build/cocoapods/framework/compose.framework') || Dir.empty?('build/cocoapods/framework/compose.framework')
15
- raise "
16
-
17
- Kotlin framework 'compose' doesn't exist yet, so a proper Xcode project can't be generated.
18
- 'pod install' should be executed after running ':generateDummyFramework' Gradle task:
19
-
20
- ./gradlew :compose:generateDummyFramework
21
-
22
- Alternatively, proper pod installation is performed during Gradle sync in the IDE (if Podfile location is set)"
23
- end
24
-
25
- spec.xcconfig = {
26
- 'ENABLE_USER_SCRIPT_SANDBOXING' => 'NO',
27
- }
28
-
29
- spec.pod_target_xcconfig = {
30
- 'KOTLIN_PROJECT_PATH' => ':compose',
31
- 'PRODUCT_MODULE_NAME' => 'compose',
32
- }
33
-
34
- spec.script_phases = [
35
- {
36
- :name => 'Build MoMoComposeKits',
37
- :execution_position => :before_compile,
38
- :shell_path => '/bin/sh',
39
- :script => <<-SCRIPT
40
- if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then
41
- echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\""
42
- exit 0
43
- fi
44
- set -ev
45
- REPO_ROOT="$PODS_TARGET_SRCROOT"
46
- "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \
47
- -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \
48
- -Pkotlin.native.cocoapods.archs="$ARCHS" \
49
- -Pkotlin.native.cocoapods.configuration="$CONFIGURATION"
50
- SCRIPT
51
- }
52
- ]
53
- spec.resources = ['build/compose/cocoapods/compose-resources']
54
- end
@@ -1,149 +0,0 @@
1
- plugins {
2
- alias(libs.plugins.android.library)
3
- alias(libs.plugins.jetbrains.kotlin.multiplatform)
4
- alias(libs.plugins.compose)
5
- alias(libs.plugins.kotlin.compose.compiler)
6
- id(libs.plugins.jetbrains.kotlin.cocoapods.get().pluginId)
7
- kotlin("plugin.serialization")
8
- id("maven-publish")
9
- }
10
- fun getVersionFromPackageJson(): String {
11
- val packageJsonFile = file("../package.json")
12
- val packageJsonText = packageJsonFile.readText()
13
- val versionRegex = "\"version\"\\s*:\\s*\"([^\"]*)\"".toRegex()
14
- val matchResult = versionRegex.find(packageJsonText)
15
- return matchResult?.groupValues?.get(1) ?: throw IllegalStateException("Version not found in package.json")
16
- }
17
-
18
- val libName = "MoMoComposeKits"
19
- val libGroup = "vn.momo.kits"
20
- val libVersion = "0.0.1"
21
-
22
- version = getVersionFromPackageJson()
23
- kotlin {
24
- androidTarget {
25
- publishLibraryVariants("release")
26
- }
27
-
28
- val isDebug = (project.findProperty("kotlin.native.cocoapods.platform") as? String)
29
- ?.contains("iphoneos", ignoreCase = true) == false
30
-
31
- val iosTargets = if (isDebug) {
32
- listOf(iosX64(), iosSimulatorArm64())
33
- } else {
34
- listOf(iosArm64())
35
- }
36
-
37
- iosTargets.forEach { iosTarget ->
38
- iosTarget.binaries.framework {
39
- baseName = libName
40
- isStatic = true
41
- }
42
- }
43
-
44
- cocoapods {
45
- name = libName
46
- summary = libName
47
- homepage = libName
48
- authors = "M_SERVICE"
49
- ios.deploymentTarget = "13.0"
50
-
51
- framework {
52
- isStatic = true
53
- }
54
-
55
- pod("lottie-ios") {
56
- moduleName = "Lottie"
57
- version = "4.4.3"
58
- extraOpts += listOf("-compiler-option", "-fmodules")
59
- }
60
- }
61
-
62
-
63
- sourceSets {
64
- val commonMain by getting {
65
- dependencies {
66
- implementation(compose.runtime)
67
- implementation(compose.foundation)
68
- implementation(compose.material)
69
- implementation(compose.material3)
70
- implementation(compose.components.resources)
71
- implementation(libs.ktor.client.core)
72
- implementation(libs.jetbrains.coroutines.core)
73
- implementation(libs.navigation.multiplatform)
74
- implementation(libs.coil.multiplatform.compose)
75
- implementation(libs.coil.multiplatform.core)
76
- implementation(libs.coil.multiplatform.network.ktor)
77
- implementation(libs.jetbrains.serialization.json)
78
- implementation(libs.kotlinx.datetime)
79
- api(project(":NativeMaxApi"))
80
- }
81
- }
82
- val androidMain by getting {
83
- dependencies {
84
- implementation(libs.ktor.client.okhttp)
85
- implementation(libs.jetbrains.coroutines.android)
86
- api("androidx.activity:activity-compose:1.8.2")
87
- implementation(libs.airbnb.lottie)
88
- }
89
- }
90
- if (isDebug) {
91
- val iosX64Main by getting
92
- val iosSimulatorArm64Main by getting
93
- } else {
94
- val iosArm64Main by getting
95
- }
96
- iosMain.dependencies {
97
- implementation(libs.ktor.client.darwin)
98
- }
99
- }
100
-
101
- task("testClasses")
102
- }
103
-
104
- publishing {
105
- repositories {
106
- maven {
107
- group = libGroup
108
- version = libVersion
109
-
110
- name = "GitLab"
111
- url = uri("https://gitlab.mservice.com.vn/api/v4/projects/2374/packages/maven")
112
- credentials(PasswordCredentials::class) {
113
- username = "gitlab+deploy-token-74"
114
- password = "L3zudJhxiPsQi9hZ1YLX"
115
- }
116
- authentication {
117
- create<BasicAuthentication>("basic")
118
- }
119
- }
120
- }
121
- }
122
-
123
- android {
124
- compileSdk = 34
125
- namespace = "com.myapplication.common"
126
-
127
- sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
128
- sourceSets["main"].res.srcDirs("src/androidMain/res")
129
- sourceSets["main"].resources.srcDirs("src/commonMain/resources")
130
-
131
- defaultConfig {
132
- minSdk = 23
133
- }
134
- compileOptions {
135
- sourceCompatibility = JavaVersion.VERSION_17
136
- targetCompatibility = JavaVersion.VERSION_17
137
- }
138
- kotlin {
139
- jvmToolchain(17)
140
- }
141
- }
142
-
143
- compose {
144
- resources {
145
- publicResClass = true
146
- packageOfResClass = "vn.momo.uikits.resources"
147
- generateResClass = always
148
- }
149
- }
@@ -1,2 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <manifest />
@@ -1,105 +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.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.unit.Dp
18
- import androidx.compose.ui.unit.dp
19
- import com.airbnb.lottie.LottieProperty
20
- import com.airbnb.lottie.compose.LottieAnimation
21
- import com.airbnb.lottie.compose.LottieCompositionSpec
22
- import com.airbnb.lottie.compose.LottieConstants
23
- import com.airbnb.lottie.compose.rememberLottieComposition
24
- import com.airbnb.lottie.compose.rememberLottieDynamicProperties
25
- import com.airbnb.lottie.compose.rememberLottieDynamicProperty
26
- import vn.momo.kits.const.AppNavigationBar
27
- import vn.momo.kits.const.AppStatusBar
28
- import vn.momo.kits.utils.readJson
29
- import androidx.activity.compose.BackHandler as AndroidBackHandler
30
-
31
- actual fun getPlatformName(): String = "Android"
32
-
33
- @Composable
34
- actual fun getScreenDimensions(): ScreenDimension {
35
- val config = LocalConfiguration.current
36
- return ScreenDimension(
37
- config.screenWidthDp, config.screenHeightDp
38
- )
39
- }
40
-
41
- actual fun NativePaint.setMaskFilter(blurRadius: Float) {
42
- this.maskFilter = BlurMaskFilter(blurRadius, BlurMaskFilter.Blur.NORMAL)
43
- }
44
-
45
- @SuppressLint("InternalInsetResource")
46
- @Composable
47
- actual fun getStatusBarHeight(): Dp {
48
- val resourceId = Resources.getSystem().getIdentifier(
49
- "status_bar_height",
50
- "dimen",
51
- "android"
52
- )
53
- return if(resourceId > 0) Resources.getSystem().getDimensionPixelSize(resourceId).dp else 0.dp
54
- }
55
-
56
- @Composable
57
- actual fun BackHandler(enabled: Boolean, onBack: () -> Unit) {
58
- AndroidBackHandler(enabled = enabled, onBack = onBack)
59
- }
60
-
61
- @Composable
62
- actual fun getScreenHeight(): Dp {
63
- return getScreenDimensions().height.dp + if (getAndroidBuildVersion() >= 35) 0.dp else AppStatusBar.current + AppNavigationBar.current
64
- }
65
-
66
- actual fun getAndroidBuildVersion(): Int = Build.VERSION.SDK_INT
67
-
68
- @Composable
69
- actual fun LottieAnimation(
70
- path: String,
71
- tintColor: Color?,
72
- bgColor: Color?,
73
- modifier: Modifier
74
- ) {
75
- val json = readJson(path)
76
-
77
- if (json.isEmpty()) {
78
- Box(modifier)
79
- return
80
- }
81
-
82
- val composition by rememberLottieComposition(
83
- LottieCompositionSpec.JsonString(json)
84
- )
85
-
86
- val colorFilter = PorterDuffColorFilter(
87
- tintColor?.toArgb() ?: Color.White.toArgb(),
88
- PorterDuff.Mode.SRC_ATOP
89
- )
90
-
91
- val dynamicProperties = rememberLottieDynamicProperties(
92
- rememberLottieDynamicProperty(
93
- property = LottieProperty.COLOR_FILTER,
94
- value = colorFilter,
95
- keyPath = arrayOf("**")
96
- )
97
- )
98
-
99
- LottieAnimation(
100
- composition = composition,
101
- iterations = LottieConstants.IterateForever,
102
- dynamicProperties = if (tintColor != null) dynamicProperties else null,
103
- modifier = modifier
104
- )
105
- }
@@ -1 +0,0 @@
1
- {"v":"5.10.2","fr":30,"ip":0,"op":20,"w":100,"h":100,"nm":"Spinner3.1_Refine","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":12,"ty":4,"nm":"loading 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0],"e":[360]},{"t":20}],"ix":10},"p":{"a":0,"k":[50,50,0],"ix":2,"l":2},"a":{"a":0,"k":[44.124,44.124,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[90,90],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.996078431373,0.956862745098,0.980392156863,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":9,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[44.124,44.124],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0],"e":[20]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[20],"e":[0]},{"t":20}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[35],"e":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[50],"e":[35]},{"t":20}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":20,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"loading 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":2,"s":[0],"e":[360]},{"t":20}],"ix":10},"p":{"a":0,"k":[50,50,0],"ix":2,"l":2},"a":{"a":0,"k":[44.124,44.124,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[90,90],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.98431372549,0.835294117647,0.917647058824,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":9,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[44.124,44.124],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":2,"s":[0],"e":[20]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[20],"e":[0]},{"t":20}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":2,"s":[35],"e":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[50],"e":[35]},{"t":20}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":20,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"base pink 2","sr":1,"ks":{"o":{"a":0,"k":40,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[50,50,0],"ix":2,"l":2},"a":{"a":0,"k":[44.124,44.124,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[90,90],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.996078431373,0.972549019608,0.988235294118,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":9,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[44.124,44.124],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":20,"st":0,"ct":1,"bm":0}],"markers":[]}
@@ -1,57 +0,0 @@
1
- package vn.momo.kits.application
2
-
3
- import androidx.compose.foundation.background
4
- import androidx.compose.foundation.layout.Box
5
- import androidx.compose.foundation.layout.fillMaxWidth
6
- import androidx.compose.foundation.layout.height
7
- import androidx.compose.foundation.layout.offset
8
- import androidx.compose.foundation.layout.padding
9
- import androidx.compose.foundation.layout.width
10
- import androidx.compose.foundation.shape.RoundedCornerShape
11
- import androidx.compose.runtime.Composable
12
- import androidx.compose.ui.Modifier
13
- import androidx.compose.ui.graphics.Color
14
- import androidx.compose.ui.unit.dp
15
- import androidx.compose.ui.zIndex
16
- import vn.momo.kits.components.InputSearch
17
- import vn.momo.kits.components.InputSearchProps
18
- import vn.momo.kits.const.Radius
19
- import vn.momo.kits.const.Spacing
20
-
21
- @Composable
22
- fun AnimationSearchInput(
23
- animations: HeaderAnimations,
24
- inputSearchProps: InputSearchProps
25
- ) {
26
- Box(
27
- modifier = Modifier
28
- .fillMaxWidth()
29
- .offset(
30
- x = animations.translateX.dp,
31
- y = animations.translateY.dp
32
- )
33
- ) {
34
- Box(
35
- modifier = Modifier
36
- .height(HEADER_HEIGHT.dp)
37
- .padding(vertical = Spacing.S)
38
- .zIndex(1f)
39
- ) {
40
- Box(
41
- modifier = Modifier
42
- .width(animations.width.dp)
43
- .background(
44
- color = animations.backgroundSearch,
45
- shape = RoundedCornerShape(Radius.XL)
46
- )
47
- ) {
48
- InputSearch(
49
- inputSearchProps = inputSearchProps.copy(
50
- showButtonText = false,
51
- backgroundColor = Color.Transparent
52
- )
53
- )
54
- }
55
- }
56
- }
57
- }
@@ -1,201 +0,0 @@
1
- package vn.momo.kits.application
2
-
3
- import androidx.compose.animation.AnimatedVisibility
4
- import androidx.compose.animation.core.CubicBezierEasing
5
- import androidx.compose.animation.core.animateDpAsState
6
- import androidx.compose.animation.core.tween
7
- import androidx.compose.animation.expandHorizontally
8
- import androidx.compose.animation.fadeIn
9
- import androidx.compose.animation.fadeOut
10
- import androidx.compose.animation.shrinkHorizontally
11
- import androidx.compose.foundation.ScrollState
12
- import androidx.compose.foundation.background
13
- import androidx.compose.foundation.interaction.MutableInteractionSource
14
- import androidx.compose.foundation.layout.Arrangement
15
- import androidx.compose.foundation.layout.Box
16
- import androidx.compose.foundation.layout.Row
17
- import androidx.compose.foundation.layout.Spacer
18
- import androidx.compose.foundation.layout.fillMaxSize
19
- import androidx.compose.foundation.layout.height
20
- import androidx.compose.foundation.layout.offset
21
- import androidx.compose.foundation.layout.padding
22
- import androidx.compose.foundation.layout.sizeIn
23
- import androidx.compose.foundation.layout.width
24
- import androidx.compose.material3.AlertDialogDefaults.shape
25
- import androidx.compose.material3.FloatingActionButton
26
- import androidx.compose.material3.FloatingActionButtonDefaults
27
- import androidx.compose.runtime.Composable
28
- import androidx.compose.runtime.LaunchedEffect
29
- import androidx.compose.runtime.getValue
30
- import androidx.compose.runtime.mutableStateOf
31
- import androidx.compose.runtime.remember
32
- import androidx.compose.runtime.rememberCoroutineScope
33
- import androidx.compose.runtime.saveable.rememberSaveable
34
- import androidx.compose.runtime.setValue
35
- import androidx.compose.ui.Alignment
36
- import androidx.compose.ui.Modifier
37
- import androidx.compose.ui.graphics.Color
38
- import androidx.compose.ui.unit.Dp
39
- import androidx.compose.ui.unit.dp
40
- import androidx.compose.ui.zIndex
41
- import kotlinx.coroutines.delay
42
- import kotlinx.coroutines.flow.MutableStateFlow
43
- import kotlinx.coroutines.flow.collectLatest
44
- import kotlinx.coroutines.launch
45
- import vn.momo.kits.components.Icon
46
- import vn.momo.kits.components.Text
47
- import vn.momo.kits.const.Typography
48
-
49
- enum class FABSize {
50
- SMALL,
51
- DEFAULT,
52
- }
53
-
54
- enum class FABPosition {
55
- END,
56
- CENTER,
57
- }
58
-
59
- data class FabProps(
60
- val icon: String,
61
- val iconColor: Color? = null,
62
- val label: String? = null,
63
- val onClick: () -> Unit,
64
- val size: FABSize = FABSize.DEFAULT,
65
- val bottom: Dp? = null,
66
- val scrollState: ScrollState? = null,
67
- val position: FABPosition? = FABPosition.END,
68
- )
69
-
70
- @Deprecated("Use vn.momo.kits.navigation.FloatingButton instead", ReplaceWith("vn.momo.kits.navigation.FloatingButton"))
71
- @Composable
72
- fun FloatingButton(
73
- scrollPosition: Int,
74
- bottom: Dp,
75
- onClick: () -> Unit,
76
- containerColor: Color,
77
- contentColor: Color = containerColor,
78
- icon: String,
79
- iconColor: Color? = null,
80
- text: String? = null,
81
- elevation: androidx.compose.material3.FloatingActionButtonElevation = FloatingActionButtonDefaults.elevation(
82
- 4.dp,
83
- 4.dp,
84
- 4.dp,
85
- 4.dp
86
- ),
87
- size: FABSize = FABSize.DEFAULT,
88
- position: FABPosition = FABPosition.END,
89
- keyboardSize: Dp = 0.dp,
90
- ) {
91
- val scrollPositionStateFlow = remember { MutableStateFlow(scrollPosition) }
92
- var lastScrollPosition by rememberSaveable { mutableStateOf(0) }
93
- val coroutineScope = rememberCoroutineScope()
94
- var isExpanded by rememberSaveable { mutableStateOf(false) }
95
-
96
- val startPadding = if (isExpanded) 12.dp else 0.dp
97
- val endPadding = if (isExpanded) 12.dp else 0.dp
98
- val widthIn = if ((size === FABSize.SMALL)) 36.dp else 48.dp
99
-
100
-
101
- val width = animateDpAsState(
102
- targetValue = if (isExpanded && text != null) 80.dp else widthIn,
103
- animationSpec = tween(
104
- durationMillis = 200,
105
- easing = CubicBezierEasing(0.2f, 0.2f, 0.2f, 0.2f),
106
- )
107
- )
108
-
109
- LaunchedEffect(text) {
110
- if (text != null) {
111
- coroutineScope.launch {
112
- scrollPositionStateFlow
113
- .collectLatest { debouncedScrollPosition ->
114
- isExpanded = debouncedScrollPosition > lastScrollPosition
115
- delay(300)
116
- lastScrollPosition = debouncedScrollPosition
117
-
118
- }
119
- }
120
- }
121
- }
122
-
123
- LaunchedEffect(scrollPosition) {
124
- scrollPositionStateFlow.value = scrollPosition
125
- }
126
-
127
- Box(
128
- Modifier
129
- .fillMaxSize()
130
- .padding(end = 12.dp, bottom = bottom)
131
- .offset(y = -keyboardSize)
132
- .background(Color.Transparent)
133
- .zIndex(10f),
134
- contentAlignment = if (position == FABPosition.END) Alignment.BottomEnd else Alignment.BottomCenter,
135
- ) {
136
- FloatingActionButton(
137
- onClick = onClick,
138
- shape = shape,
139
- containerColor = containerColor,
140
- contentColor = contentColor,
141
- elevation = elevation,
142
- interactionSource = remember { MutableInteractionSource() },
143
- modifier = Modifier
144
- .sizeIn(minWidth = width.value)
145
- .height(widthIn)
146
- ) {
147
- Row(
148
- modifier = Modifier.padding(start = startPadding, end = endPadding),
149
- verticalAlignment = Alignment.CenterVertically,
150
- horizontalArrangement = if (isExpanded) Arrangement.Start else Arrangement.Center
151
- ) {
152
- Icon(
153
- icon,
154
- size = if (size === FABSize.SMALL) 12.dp else 24.dp,
155
- color = iconColor ?: Color.White
156
- )
157
- AnimatedVisibility(
158
- visible = isExpanded,
159
- enter = ExtendedFabExpandAnimation,
160
- exit = ExtendedFabCollapseAnimation,
161
- ) {
162
- Row {
163
- Spacer(Modifier.width(12.dp))
164
- Text(
165
- text ?: "",
166
- color = Color.White,
167
- style = Typography.actionDefaultBold
168
- )
169
- }
170
- }
171
- }
172
- }
173
- }
174
- }
175
-
176
- private val ExtendedFabCollapseAnimation = fadeOut(
177
- animationSpec = tween(
178
- durationMillis = 800,
179
- easing = CubicBezierEasing(0.0f, 0.0f, 1.0f, 1.0f),
180
- )
181
- ) + shrinkHorizontally(
182
- animationSpec = tween(
183
- durationMillis = 500,
184
- easing = CubicBezierEasing(0.2f, 0.0f, 0.0f, 1.0f),
185
- ),
186
- shrinkTowards = Alignment.Start,
187
- )
188
-
189
- private val ExtendedFabExpandAnimation = fadeIn(
190
- animationSpec = tween(
191
- durationMillis = 200,
192
- delayMillis = 100,
193
- easing = CubicBezierEasing(0.0f, 0.0f, 1.0f, 1.0f),
194
- ),
195
- ) + expandHorizontally(
196
- animationSpec = tween(
197
- durationMillis = 500,
198
- easing = CubicBezierEasing(0.2f, 0.0f, 0.0f, 1.0f),
199
- ),
200
- expandFrom = Alignment.Start,
201
- )