@momo-kits/native-kits 0.167.1-duo.1-debug → 0.167.1-duo.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 (260) hide show
  1. package/CLAUDE.md +32 -0
  2. package/ios/Application/ApplicationEnvironment.swift +17 -0
  3. package/ios/Application/ComposeApi.swift +2 -1
  4. package/ios/Application/{Components.swift → LegacyHeader.swift} +7 -65
  5. package/ios/Application/Screen.swift +3 -2
  6. package/ios/Avatar/Avatar.swift +4 -3
  7. package/ios/Badge/Badge.swift +6 -4
  8. package/ios/Badge/BadgeDot.swift +1 -1
  9. package/ios/Badge/BadgeRibbon.swift +0 -1
  10. package/ios/Button/Button.swift +15 -12
  11. package/ios/CalculatorKeyboard/CalculatorKeyboard.swift +64 -18
  12. package/ios/Carousel/Carousel.swift +29 -12
  13. package/ios/Checkbox/Checkbox.swift +7 -3
  14. package/ios/Chip/Chip.swift +5 -4
  15. package/ios/Collapse/Collapse.swift +70 -19
  16. package/ios/Colors+Radius+Spacing/Colors.swift +10 -1
  17. package/ios/DateTimePicker/DateTimePicker.swift +54 -20
  18. package/ios/DateTimePicker/WheelPicker.swift +103 -105
  19. package/ios/Divider/Divider.swift +37 -4
  20. package/ios/Extensions/Color++.swift +38 -9
  21. package/ios/Extensions/OptionalEnvironmentObject.swift +12 -0
  22. package/ios/Extensions/SkeletonUICompat.swift +11 -0
  23. package/ios/Icon/Icon.swift +21 -23
  24. package/ios/Icon/Icons.swift +1329 -0
  25. package/ios/IconButton/IconButton.swift +15 -7
  26. package/ios/Image/Image.swift +7 -23
  27. package/ios/Information/Information.swift +27 -9
  28. package/ios/Input/ErrorView.swift +2 -2
  29. package/ios/Input/Input.swift +160 -147
  30. package/ios/Input/InputPhoneNumber.swift +12 -9
  31. package/ios/Input/InputSearch.swift +102 -75
  32. package/ios/Input/InputTextArea.swift +128 -145
  33. package/ios/InputDropDown/InputDropDown.swift +10 -7
  34. package/ios/InputMoney/InputMoney.swift +33 -11
  35. package/ios/InputOTP/InputOTP.swift +22 -12
  36. package/ios/Layout/Card.swift +50 -0
  37. package/ios/Layout/GridContext.swift +123 -3
  38. package/ios/Layout/Item.swift +5 -4
  39. package/ios/Layout/ScreenLayout.swift +312 -0
  40. package/ios/Layout/Section.swift +4 -100
  41. package/ios/Loader/Loader.swift +5 -9
  42. package/ios/Lottie/LottieView.swift +14 -2
  43. package/ios/{Application/Navigation/Overplay → Navigation}/BottomSheet.swift +97 -8
  44. package/ios/Navigation/BottomTab/BottomTab.swift +187 -0
  45. package/ios/{Application/Navigation → Navigation}/BottomTab/BottomTabBar.swift +15 -7
  46. package/ios/Navigation/BottomTab/DuoBarCompression.swift +105 -0
  47. package/ios/Navigation/BottomTab/DuoTabBar.swift +304 -0
  48. package/ios/{Application → Navigation/Component}/FloatingButton.swift +14 -3
  49. package/ios/Navigation/Component/Header.swift +493 -0
  50. package/ios/Navigation/Component/HeaderBackground.swift +134 -0
  51. package/ios/Navigation/Component/HeaderJourney.swift +73 -0
  52. package/ios/Navigation/Component/HeaderLocation.swift +48 -0
  53. package/ios/Navigation/Component/HeaderRight.swift +386 -0
  54. package/ios/Navigation/Component/HeaderTitle.swift +36 -0
  55. package/ios/{Application/Navigation → Navigation/Component}/HeaderUser.swift +21 -24
  56. package/ios/Navigation/Component/SideBar.swift +176 -0
  57. package/ios/{Application/Navigation/Overplay → Navigation/Component}/SnackBar.swift +5 -5
  58. package/ios/Navigation/HostBackGestureBridge.swift +57 -0
  59. package/ios/{Application/Navigation/Overplay → Navigation}/ModalScreen.swift +5 -1
  60. package/ios/Navigation/Navigation.swift +190 -0
  61. package/ios/{Application/Navigation → Navigation}/NavigationContainer.swift +92 -81
  62. package/ios/{Application/Navigation → Navigation}/Navigator.swift +185 -36
  63. package/ios/Navigation/StackScreen.swift +782 -0
  64. package/ios/{Application/Navigation → Navigation}/Tracking/ScreenTracker.swift +12 -5
  65. package/ios/OTPKeyboard/OTPKeyboard.swift +8 -11
  66. package/ios/Pagination/PaginationScroll.swift +2 -2
  67. package/ios/Popup/PopupDisplay.swift +72 -136
  68. package/ios/Popup/PopupInput.swift +10 -13
  69. package/ios/Popup/PopupLayout.swift +140 -0
  70. package/ios/Popup/PopupNotify.swift +56 -73
  71. package/ios/Popup/PopupPromotion.swift +31 -47
  72. package/ios/PopupView/FullscreenPopup.swift +13 -19
  73. package/ios/PopupView/PopupView.swift +1 -1
  74. package/ios/PopupView/Utils++.swift +0 -8
  75. package/ios/ProgressInfo/ProgressInfo.swift +4 -2
  76. package/ios/Radio/Radio.swift +2 -1
  77. package/ios/Rating/Rating.swift +9 -1
  78. package/ios/Resources/dot_loading.json +558 -0
  79. package/ios/Resources/lottie_circle_loader.json +1 -0
  80. package/ios/ScrollIndicator/ScrollIndicator.swift +11 -10
  81. package/ios/Skeleton/Skeleton.swift +22 -27
  82. package/ios/Slider/Slider.swift +16 -18
  83. package/ios/Stepper/Stepper.swift +6 -1
  84. package/ios/Steps/Steps.swift +8 -6
  85. package/ios/SuggestAction/SuggestAction.swift +5 -0
  86. package/ios/Swipeable/SwipeCell.swift +10 -6
  87. package/ios/Switch/Switch.swift +22 -20
  88. package/ios/TabView/TabView.swift +102 -21
  89. package/ios/Tag/Tag.swift +15 -4
  90. package/ios/Template/Logo/Logo.swift +2 -1
  91. package/ios/Template/TrustBanner/TrustBanner.swift +106 -54
  92. package/ios/Title/Title.swift +6 -17
  93. package/ios/Tooltip/Tooltip.swift +29 -14
  94. package/ios/Typography/Text.swift +61 -19
  95. package/ios/Uploader/Uploader.swift +3 -1
  96. package/ios/native-kits.podspec +2 -1
  97. package/ios-demo/MoMoUIKitsDemo.podspec +1 -1
  98. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ContentView.swift +1 -1
  99. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/DuoTabDemo.swift +80 -0
  100. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/Home.swift +1 -0
  101. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/IPhoneDuoDemo.swift +173 -0
  102. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/NavigationDemo.swift +77 -1
  103. package/package.json +1 -1
  104. package/scripts/gen-ios-icons.mjs +36 -0
  105. package/.claude/settings.local.json +0 -185
  106. package/build.gradle.kts +0 -11
  107. package/compose/build.gradle.kts +0 -190
  108. package/compose/build.gradle.kts.backup +0 -190
  109. package/compose/compose.podspec +0 -47
  110. package/compose/src/androidMain/kotlin/vn/momo/kits/const/HostFont.android.kt +0 -19
  111. package/compose/src/androidMain/kotlin/vn/momo/kits/navigation/ScrollToTop.android.kt +0 -6
  112. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/BackGesture.android.kt +0 -12
  113. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/OsFontScale.android.kt +0 -7
  114. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +0 -151
  115. package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +0 -52
  116. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +0 -124
  117. package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +0 -183
  118. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +0 -207
  119. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +0 -39
  120. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +0 -86
  121. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +0 -76
  122. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +0 -76
  123. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +0 -293
  124. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +0 -33
  125. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +0 -831
  126. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Localize.kt +0 -269
  127. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +0 -110
  128. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +0 -378
  129. package/compose/src/commonMain/kotlin/vn/momo/kits/application/WidgetContainer.kt +0 -56
  130. package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +0 -69
  131. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Avatar.kt +0 -157
  132. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +0 -82
  133. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +0 -32
  134. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +0 -338
  135. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BaselineView.kt +0 -175
  136. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +0 -356
  137. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Carousel.kt +0 -113
  138. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +0 -89
  139. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +0 -128
  140. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Collapse.kt +0 -209
  141. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +0 -542
  142. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +0 -49
  143. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +0 -76
  144. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +0 -125
  145. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +0 -231
  146. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +0 -189
  147. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +0 -475
  148. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +0 -114
  149. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +0 -266
  150. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +0 -240
  151. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +0 -223
  152. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +0 -264
  153. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +0 -185
  154. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +0 -343
  155. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Loader.kt +0 -108
  156. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +0 -56
  157. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +0 -41
  158. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +0 -84
  159. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +0 -40
  160. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +0 -334
  161. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +0 -98
  162. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ProgressInfo.kt +0 -310
  163. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +0 -59
  164. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Rating.kt +0 -87
  165. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +0 -21
  166. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +0 -90
  167. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Slider.kt +0 -323
  168. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +0 -220
  169. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Steps.kt +0 -473
  170. package/compose/src/commonMain/kotlin/vn/momo/kits/components/SuggestAction.kt +0 -122
  171. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Swipe.kt +0 -199
  172. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +0 -91
  173. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +0 -552
  174. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +0 -88
  175. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +0 -125
  176. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +0 -207
  177. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +0 -498
  178. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +0 -176
  179. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Uploader.kt +0 -182
  180. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +0 -193
  181. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +0 -29
  182. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +0 -234
  183. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +0 -188
  184. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +0 -325
  185. package/compose/src/commonMain/kotlin/vn/momo/kits/const/HostFont.kt +0 -16
  186. package/compose/src/commonMain/kotlin/vn/momo/kits/const/KitDesignSystem.kt +0 -18
  187. package/compose/src/commonMain/kotlin/vn/momo/kits/const/KitFontScale.kt +0 -22
  188. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +0 -12
  189. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +0 -16
  190. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +0 -188
  191. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +0 -297
  192. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +0 -52
  193. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +0 -38
  194. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +0 -39
  195. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +0 -52
  196. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +0 -66
  197. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +0 -11
  198. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +0 -104
  199. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +0 -48
  200. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +0 -51
  201. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +0 -299
  202. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/HostBackGestureBridge.kt +0 -58
  203. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +0 -129
  204. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +0 -106
  205. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +0 -201
  206. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +0 -393
  207. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ScrollToTop.kt +0 -8
  208. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +0 -596
  209. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackTransition.kt +0 -148
  210. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/SwipeBackHaptic.kt +0 -35
  211. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +0 -175
  212. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +0 -225
  213. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +0 -86
  214. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +0 -169
  215. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +0 -360
  216. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +0 -83
  217. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderJourney.kt +0 -106
  218. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderLocation.kt +0 -75
  219. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +0 -309
  220. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +0 -37
  221. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +0 -364
  222. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +0 -132
  223. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/tracking/ScreenTracker.kt +0 -127
  224. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/BackGesture.kt +0 -12
  225. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/ComposeLottieAnimation.kt +0 -91
  226. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/OsFontScale.kt +0 -9
  227. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +0 -71
  228. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +0 -1329
  229. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +0 -55
  230. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Tracking.kt +0 -15
  231. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +0 -115
  232. package/compose/src/iosMain/kotlin/vn/momo/kits/const/HostFont.ios.kt +0 -40
  233. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/HostBackGesture.ios.kt +0 -45
  234. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/ScrollToTop.ios.kt +0 -32
  235. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/BackGesture.ios.kt +0 -38
  236. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/OsFontScale.ios.kt +0 -66
  237. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +0 -213
  238. package/gradle/libs.versions.toml +0 -69
  239. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  240. package/gradle/wrapper/gradle-wrapper.properties +0 -8
  241. package/gradle.properties +0 -26
  242. package/gradlew +0 -252
  243. package/gradlew.bat +0 -94
  244. package/ios/Application/HeaderRight.swift +0 -306
  245. package/ios/Application/Navigation/BottomTab/BottomTab.swift +0 -104
  246. package/ios/Application/Navigation/HeaderBackProps.swift +0 -66
  247. package/ios/Application/Navigation/HeaderTitle.swift +0 -57
  248. package/ios/Application/Navigation/NavigationOptions.swift +0 -109
  249. package/ios/Application/Navigation/NavigatorManager.swift +0 -22
  250. package/ios/Application/Navigation/component/Header.swift +0 -178
  251. package/ios/Application/Navigation/component/HeaderBackground.swift +0 -83
  252. package/ios/Application/Navigation/component/HeaderColor.swift +0 -65
  253. package/ios/Application/Navigation/component/HeaderRightWidthKey.swift +0 -11
  254. package/ios/Application/Navigation/component/NavigationFooter.swift +0 -90
  255. package/ios/Application/Navigation/component/NavigationHeaderRight.swift +0 -196
  256. package/ios/Application/StackScreen.swift +0 -492
  257. package/ios-demo/README.md +0 -120
  258. package/local.properties +0 -8
  259. package/settings.gradle.kts +0 -64
  260. /package/ios/{Application/Navigation → Navigation}/BottomTab/CurvedContainer.swift +0 -0
@@ -1,91 +0,0 @@
1
- package vn.momo.kits.platform
2
-
3
- import androidx.compose.foundation.Image
4
- import androidx.compose.foundation.background
5
- import androidx.compose.foundation.layout.Box
6
- import androidx.compose.foundation.layout.fillMaxSize
7
- import androidx.compose.runtime.Composable
8
- import androidx.compose.runtime.LaunchedEffect
9
- import androidx.compose.runtime.getValue
10
- import androidx.compose.runtime.rememberUpdatedState
11
- import androidx.compose.runtime.snapshotFlow
12
- import androidx.compose.ui.Modifier
13
- import androidx.compose.ui.graphics.Color
14
- import io.github.alexzhirkevich.compottie.ExperimentalCompottieApi
15
- import io.github.alexzhirkevich.compottie.LottieCompositionSpec
16
- import io.github.alexzhirkevich.compottie.animateLottieCompositionAsState
17
- import io.github.alexzhirkevich.compottie.dynamic.rememberLottieDynamicProperties
18
- import io.github.alexzhirkevich.compottie.rememberLottieComposition
19
- import io.github.alexzhirkevich.compottie.rememberLottiePainter
20
- import vn.momo.kits.utils.readJson
21
-
22
- @OptIn(ExperimentalCompottieApi::class)
23
- @Composable
24
- internal fun ComposeLottieAnimation(
25
- path: String,
26
- tintColor: Color?,
27
- bgColor: Color?,
28
- iterations: Int,
29
- isPlaying: Boolean,
30
- onEvent: ((String) -> Unit)?,
31
- modifier: Modifier,
32
- ) {
33
- val json = readJson(path)
34
-
35
- if (json.isEmpty()) {
36
- Box(modifier.background(bgColor ?: Color.Transparent))
37
- return
38
- }
39
-
40
- val composition by rememberLottieComposition(json) {
41
- LottieCompositionSpec.JsonString(json)
42
- }
43
-
44
- val dynamicProperties = if (tintColor != null) {
45
- rememberLottieDynamicProperties(tintColor) {
46
- shapeLayer("**") {
47
- fill("**") { color { tintColor } }
48
- stroke("**") { color { tintColor } }
49
- }
50
- }
51
- } else {
52
- null
53
- }
54
-
55
- val lottieState = animateLottieCompositionAsState(
56
- composition = composition,
57
- iterations = iterations,
58
- isPlaying = isPlaying,
59
- restartOnPlay = false,
60
- )
61
-
62
- val currentOnEvent by rememberUpdatedState(onEvent)
63
-
64
- LaunchedEffect(isPlaying) {
65
- currentOnEvent?.invoke(if (isPlaying) LottieEvent.Start else LottieEvent.Pause)
66
- }
67
-
68
- LaunchedEffect(lottieState) {
69
- var armed = false
70
- snapshotFlow { lottieState.isAtEnd }.collect { atEnd ->
71
- if (!atEnd) armed = true
72
- else if (armed) { armed = false; currentOnEvent?.invoke(LottieEvent.Finish) }
73
- }
74
- }
75
-
76
- Box(modifier.background(bgColor ?: Color.Transparent)) {
77
- Image(
78
- painter = rememberLottiePainter(
79
- composition = composition,
80
- progress = lottieState::value,
81
- dynamicProperties = dynamicProperties,
82
- enableExpressions = false,
83
- expressionEngineFactory = { _, _ ->
84
- error("Lottie JS expressions are disabled in MoMo kits")
85
- },
86
- ),
87
- contentDescription = null,
88
- modifier = Modifier.fillMaxSize(),
89
- )
90
- }
91
- }
@@ -1,9 +0,0 @@
1
- package vn.momo.kits.platform
2
-
3
- import androidx.compose.runtime.Composable
4
-
5
- // Overrides LocalDensity.fontScale with the live OS Dynamic Type scale so text re-scales while a
6
- // screen is visible. Wrapped inside the containers so every screen is covered, not just callers of
7
- // the app-level wrappers.
8
- @Composable
9
- expect fun ProvideOsFontScale(content: @Composable () -> Unit)
@@ -1,71 +0,0 @@
1
- package vn.momo.kits.platform
2
-
3
- import androidx.compose.runtime.Composable
4
- import androidx.compose.ui.Modifier
5
- import androidx.compose.ui.graphics.Color
6
- import androidx.compose.ui.graphics.NativePaint
7
- import androidx.compose.ui.unit.Dp
8
- import vn.momo.kits.navigation.Navigator
9
-
10
- data class ScreenDimension(
11
- val width: Int,
12
- val height: Int,
13
- )
14
-
15
- expect fun getPlatformName(): String
16
-
17
- @Composable
18
- expect fun getScreenDimensions(): ScreenDimension
19
-
20
- expect fun NativePaint.setMaskFilter(blurRadius: Float)
21
-
22
- @Composable
23
- expect fun getStatusBarHeight(): Dp
24
-
25
- @Composable
26
- expect fun BackHandler(enabled: Boolean, onBack: () -> Unit)
27
-
28
- @Suppress("ParamsComparedByRef")
29
- @Composable
30
- expect fun ProvideNavigationEventDispatcherOwner(navigator: Navigator, content: @Composable () -> Unit)
31
-
32
- @Composable
33
- expect fun getScreenHeight(): Dp
34
-
35
- sealed interface OSVersion {
36
- val value: Int
37
- data class Android(val sdk: Int) : OSVersion { override val value: Int get() = sdk }
38
- data class IOS(val major: Int) : OSVersion { override val value: Int get() = major }
39
-
40
- operator fun compareTo(other: Int): Int = value.compareTo(other)
41
- }
42
- expect fun getOSVersion(): OSVersion
43
-
44
- fun supportsImePadding(): Boolean = when (val v = getOSVersion()) {
45
- is OSVersion.Android -> v.sdk > 29
46
- is OSVersion.IOS -> true
47
- }
48
- const val LottieIterateForever: Int = Int.MAX_VALUE
49
-
50
- object LottieEvent {
51
- const val Start = "start"
52
- const val Pause = "pause"
53
- const val Finish = "finish"
54
- }
55
-
56
- @Composable
57
- expect fun LottieAnimation(
58
- path: String,
59
- tintColor: Color? = null,
60
- bgColor: Color? = null,
61
- placedAsOverlay: Boolean = false,
62
- iterations: Int = LottieIterateForever,
63
- isPlaying: Boolean = true,
64
- onEvent: ((String) -> Unit)? = null,
65
- modifier: Modifier = Modifier,
66
- useCompose: Boolean = false
67
- )
68
-
69
- expect fun NativePaint.setColor(
70
- color: Color = Color.Black
71
- )