@momo-kits/native-kits 0.162.2-debug → 0.162.2-sp.1

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 (278) hide show
  1. package/.claude/settings.local.json +55 -0
  2. package/ios/Application/Components.swift +34 -43
  3. package/ios/Application/FloatingButton.swift +10 -8
  4. package/ios/Application/Navigation/BottomTab/BottomTab.swift +102 -0
  5. package/ios/Application/Navigation/BottomTab/BottomTabBar.swift +215 -0
  6. package/ios/Application/Navigation/BottomTab/CurvedContainer.swift +65 -0
  7. package/ios/Application/Navigation/HeaderBackProps.swift +66 -0
  8. package/ios/Application/Navigation/HeaderTitle.swift +57 -0
  9. package/ios/Application/Navigation/HeaderUser.swift +209 -0
  10. package/ios/Application/Navigation/NavigationContainer.swift +151 -0
  11. package/ios/Application/Navigation/NavigationOptions.swift +109 -0
  12. package/ios/Application/Navigation/Navigator.swift +360 -0
  13. package/ios/Application/Navigation/Overplay/BottomSheet.swift +176 -0
  14. package/ios/Application/Navigation/Overplay/ModalScreen.swift +68 -0
  15. package/ios/Application/Navigation/Overplay/SnackBar.swift +144 -0
  16. package/ios/Application/Navigation/component/Header.swift +178 -0
  17. package/ios/Application/Navigation/component/HeaderBackground.swift +83 -0
  18. package/ios/Application/Navigation/component/HeaderColor.swift +65 -0
  19. package/ios/Application/StackScreen.swift +449 -0
  20. package/ios/Avatar/Avatar.swift +193 -0
  21. package/ios/Badge/Badge.swift +11 -13
  22. package/ios/Badge/BadgeRibbon.swift +12 -19
  23. package/ios/BaselineView/BaselineView.swift +163 -0
  24. package/ios/Button/Button.swift +62 -23
  25. package/ios/Carousel/Carousel.swift +181 -0
  26. package/ios/Checkbox/Checkbox.swift +14 -12
  27. package/ios/Chip/Chip.swift +23 -9
  28. package/ios/Collapse/Collapse.swift +182 -0
  29. package/ios/Colors+Radius+Spacing/Colors.swift +1 -1
  30. package/ios/Colors+Radius+Spacing/Theme.swift +295 -0
  31. package/ios/DateTimePicker/DateTimePicker.swift +210 -0
  32. package/ios/DateTimePicker/DateTimePickerTypes.swift +55 -0
  33. package/ios/DateTimePicker/DateTimePickerUtils.swift +167 -0
  34. package/ios/DateTimePicker/WheelPicker.swift +161 -0
  35. package/ios/Divider/Divider.swift +16 -0
  36. package/ios/Icon/Icon.swift +6 -1
  37. package/ios/IconButton/IconButton.swift +112 -0
  38. package/ios/Information/Information.swift +151 -0
  39. package/ios/Input/Input.swift +42 -25
  40. package/ios/Input/InputPhoneNumber.swift +21 -19
  41. package/ios/Input/InputSearch.swift +101 -45
  42. package/ios/Input/InputTextArea.swift +67 -40
  43. package/ios/InputDropDown/InputDropDown.swift +198 -0
  44. package/ios/InputMoney/InputMoney.swift +335 -0
  45. package/ios/InputOTP/InputOTP.swift +210 -0
  46. package/ios/Loader/Loader.swift +113 -0
  47. package/ios/MoMoUIKits.podspec +5 -0
  48. package/ios/OTPKeyboard/KeyboardButton.swift +1 -1
  49. package/ios/Pagination/PaginationDot.swift +61 -0
  50. package/ios/Pagination/PaginationNumber.swift +35 -0
  51. package/ios/Pagination/PaginationScroll.swift +101 -0
  52. package/ios/Pagination/PaginationWhiteDot.swift +37 -0
  53. package/ios/Popup/PopupDisplay.swift +10 -12
  54. package/ios/Popup/PopupInput.swift +2 -6
  55. package/ios/Popup/PopupNotify.swift +219 -0
  56. package/ios/ProgressInfo/ProgressInfo.swift +294 -0
  57. package/ios/Radio/Radio.swift +70 -0
  58. package/ios/Rating/Rating.swift +82 -0
  59. package/ios/Skeleton/Skeleton.swift +99 -0
  60. package/ios/Slider/Slider.swift +237 -0
  61. package/ios/Stepper/Stepper.swift +220 -0
  62. package/ios/Steps/Steps.swift +451 -0
  63. package/ios/SuggestAction/SuggestAction.swift +97 -0
  64. package/ios/Swipeable/SwipeCell.swift +185 -0
  65. package/ios/Swipeable/SwipeCellModel.swift +21 -0
  66. package/ios/TabView/TabView.swift +530 -0
  67. package/ios/Tag/Tag.swift +98 -0
  68. package/ios/Template/TrustBanner/TrustBanner.swift +2 -0
  69. package/ios/Title/Title.swift +269 -0
  70. package/ios/Tooltip/Tooltip.swift +482 -0
  71. package/ios/Typography/Text.swift +77 -5
  72. package/ios/Typography/Typography.swift +9 -0
  73. package/ios/Uploader/Uploader.swift +183 -0
  74. package/ios/native-kits.podspec +58 -8
  75. package/ios-demo/MoMoUIKitsDemo.podspec +18 -0
  76. package/ios-demo/Resources/dot_loading.json +558 -0
  77. package/ios-demo/Resources/icon.json +4052 -0
  78. package/ios-demo/Resources/lottie_circle_loader.json +1 -0
  79. package/ios-demo/Sources/MoMoUIKitsDemo/DemoScaffold.swift +48 -0
  80. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsBadgeDemoView.swift +25 -0
  81. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsButtonDemoView.swift +26 -0
  82. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsCheckboxDemoView.swift +19 -0
  83. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsChipDemoView.swift +33 -0
  84. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsInputDemoView.swift +48 -0
  85. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsPopupDemoView.swift +21 -0
  86. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsRadioDemoView.swift +17 -0
  87. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsTypographyDemoView.swift +28 -0
  88. package/ios-demo/Sources/MoMoUIKitsDemo/MoMoUIKitsDemoContext.swift +31 -0
  89. package/ios-demo/Sources/MoMoUIKitsDemo/MoMoUIKitsDemoFactory.swift +72 -0
  90. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/AnimatedHeaderDemo.swift +110 -0
  91. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/AvatarDemo.swift +93 -0
  92. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/BadgeDemo.swift +269 -0
  93. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/BaselineView.swift +117 -0
  94. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/BottomTabDemo.swift +89 -0
  95. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ButtonDemo.swift +100 -0
  96. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/CarouselDemo.swift +126 -0
  97. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/CheckboxDemo.swift +63 -0
  98. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ChipDemo.swift +20 -0
  99. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/CollapseDemo.swift +93 -0
  100. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ContentView.swift +107 -0
  101. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/DateTimePickerDemo.swift +124 -0
  102. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/DividerDemo.swift +14 -0
  103. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/HeaderUserDemo.swift +49 -0
  104. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/Home.swift +261 -0
  105. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/IconButtonDemo.swift +58 -0
  106. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ImageDemo.swift +78 -0
  107. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InformationDemo.swift +138 -0
  108. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputDemo.swift +111 -0
  109. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputDropDownDemo.swift +136 -0
  110. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputMoneyDemo.swift +107 -0
  111. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputOTPDemo.swift +73 -0
  112. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputPhoneNumberDemo.swift +100 -0
  113. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputSearchDemo.swift +32 -0
  114. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputTextAreaDemo.swift +57 -0
  115. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/LoaderDemo.swift +70 -0
  116. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/NavigationDemo.swift +227 -0
  117. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PaginationDemo.swift +72 -0
  118. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PopupDisplayDemo.swift +175 -0
  119. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PopupNotifyDemo.swift +121 -0
  120. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PopupPromotionDemo.swift +76 -0
  121. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ProgressInfoDemo.swift +89 -0
  122. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/RadioDemo.swift +32 -0
  123. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/RatingDemo.swift +56 -0
  124. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SkeletonDemo.swift +32 -0
  125. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SliderDemo.swift +150 -0
  126. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SnackBarDemo.swift +138 -0
  127. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/StepperDemo.swift +103 -0
  128. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/StepsDemo.swift +94 -0
  129. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SuggestActionDemo.swift +79 -0
  130. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SwipeDemo.swift +152 -0
  131. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SwitchDemo.swift +33 -0
  132. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TabViewDemo.swift +190 -0
  133. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TagDemo.swift +34 -0
  134. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ThemeDemo.swift +182 -0
  135. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TitleDemo.swift +109 -0
  136. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TooltipDemo.swift +187 -0
  137. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TypographyDemo.swift +87 -0
  138. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/UploaderDemo.swift +131 -0
  139. package/ios-demo/Sources/MoMoUIKitsDemo/SwiftUIDemoBrowserView.swift +50 -0
  140. package/ios-demo/Sources/MoMoUIKitsDemo/UIKitsDemoModels.swift +15 -0
  141. package/ios-demo/Sources/MoMoUIKitsDemo/UIKitsDemoRegistry.swift +73 -0
  142. package/package.json +1 -1
  143. package/publish.sh +50 -0
  144. package/scripts/gen-ios-color.mjs +136 -0
  145. package/build.gradle.kts +0 -11
  146. package/compose/build.gradle.kts +0 -186
  147. package/compose/build.gradle.kts.backup +0 -186
  148. package/compose/compose.podspec +0 -47
  149. package/compose/src/androidMain/kotlin/vn/momo/kits/navigation/ScrollToTop.android.kt +0 -6
  150. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +0 -123
  151. package/compose/src/commonMain/composeResources/font/momosignature.otf +0 -0
  152. package/compose/src/commonMain/composeResources/font/momotrustdisplay.otf +0 -0
  153. package/compose/src/commonMain/composeResources/font/sfprotext_black.otf +0 -0
  154. package/compose/src/commonMain/composeResources/font/sfprotext_black.ttf +0 -0
  155. package/compose/src/commonMain/composeResources/font/sfprotext_bold.ttf +0 -0
  156. package/compose/src/commonMain/composeResources/font/sfprotext_heavy.ttf +0 -0
  157. package/compose/src/commonMain/composeResources/font/sfprotext_light.ttf +0 -0
  158. package/compose/src/commonMain/composeResources/font/sfprotext_medium.ttf +0 -0
  159. package/compose/src/commonMain/composeResources/font/sfprotext_regular.ttf +0 -0
  160. package/compose/src/commonMain/composeResources/font/sfprotext_semibold.ttf +0 -0
  161. package/compose/src/commonMain/composeResources/font/sfprotext_thin.otf +0 -0
  162. package/compose/src/commonMain/composeResources/font/sfprotext_thin.ttf +0 -0
  163. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.otf +0 -0
  164. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.ttf +0 -0
  165. package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +0 -57
  166. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +0 -109
  167. package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +0 -201
  168. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +0 -222
  169. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +0 -48
  170. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +0 -86
  171. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +0 -76
  172. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +0 -76
  173. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +0 -305
  174. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +0 -33
  175. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +0 -921
  176. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +0 -121
  177. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +0 -403
  178. package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +0 -69
  179. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Avatar.kt +0 -157
  180. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +0 -85
  181. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +0 -32
  182. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +0 -340
  183. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BaselineView.kt +0 -198
  184. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +0 -357
  185. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Carousel.kt +0 -123
  186. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +0 -94
  187. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +0 -136
  188. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Collapse.kt +0 -224
  189. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +0 -543
  190. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +0 -23
  191. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +0 -76
  192. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +0 -148
  193. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +0 -188
  194. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +0 -116
  195. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +0 -452
  196. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +0 -172
  197. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +0 -255
  198. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +0 -235
  199. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +0 -233
  200. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +0 -259
  201. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +0 -241
  202. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +0 -364
  203. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Loader.kt +0 -108
  204. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +0 -56
  205. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +0 -41
  206. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +0 -92
  207. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +0 -40
  208. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +0 -352
  209. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +0 -103
  210. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ProgressInfo.kt +0 -338
  211. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +0 -70
  212. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Rating.kt +0 -87
  213. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +0 -17
  214. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +0 -96
  215. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Slider.kt +0 -348
  216. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +0 -256
  217. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Steps.kt +0 -494
  218. package/compose/src/commonMain/kotlin/vn/momo/kits/components/SuggestAction.kt +0 -131
  219. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Swipe.kt +0 -215
  220. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +0 -96
  221. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +0 -531
  222. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +0 -92
  223. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +0 -135
  224. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +0 -214
  225. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +0 -590
  226. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +0 -177
  227. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Uploader.kt +0 -192
  228. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +0 -205
  229. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +0 -29
  230. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +0 -239
  231. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +0 -191
  232. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +0 -306
  233. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +0 -12
  234. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +0 -16
  235. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +0 -188
  236. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +0 -285
  237. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +0 -2
  238. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +0 -35
  239. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +0 -2
  240. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +0 -57
  241. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +0 -68
  242. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +0 -11
  243. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +0 -14
  244. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +0 -50
  245. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +0 -51
  246. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +0 -253
  247. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +0 -133
  248. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +0 -104
  249. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +0 -145
  250. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +0 -345
  251. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ScrollToTop.kt +0 -8
  252. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +0 -556
  253. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +0 -161
  254. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +0 -243
  255. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +0 -86
  256. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +0 -187
  257. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +0 -315
  258. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +0 -80
  259. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +0 -306
  260. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +0 -34
  261. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +0 -370
  262. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +0 -131
  263. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/tracking/ScreenTracker.kt +0 -167
  264. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/ComposeLottieAnimation.kt +0 -72
  265. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +0 -66
  266. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +0 -1329
  267. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +0 -70
  268. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Tracking.kt +0 -15
  269. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +0 -105
  270. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/ScrollToTop.ios.kt +0 -33
  271. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +0 -186
  272. package/gradle/libs.versions.toml +0 -67
  273. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  274. package/gradle/wrapper/gradle-wrapper.properties +0 -8
  275. package/gradle.properties +0 -26
  276. package/gradlew +0 -252
  277. package/gradlew.bat +0 -94
  278. package/settings.gradle.kts +0 -64
@@ -1,34 +0,0 @@
1
- package vn.momo.kits.navigation.component
2
-
3
- import androidx.compose.foundation.layout.fillMaxWidth
4
- import androidx.compose.runtime.Composable
5
- import androidx.compose.ui.Modifier
6
- import androidx.compose.ui.graphics.Color
7
- import androidx.compose.ui.text.style.TextAlign
8
- import androidx.compose.ui.text.style.TextOverflow
9
- import androidx.compose.ui.unit.sp
10
- import androidx.compose.ui.zIndex
11
- import vn.momo.kits.components.Text
12
- import vn.momo.kits.const.Typography
13
- import vn.momo.kits.modifier.setAutomationId
14
-
15
- @Composable
16
- fun HeaderTitle(
17
- title: String = "",
18
- color: Color? = null,
19
- modifier: Modifier = Modifier.fillMaxWidth(),
20
- textAlign: TextAlign = TextAlign.Start,
21
- ) {
22
- Text(
23
- modifier = modifier.zIndex(1f).setAutomationId("title_navigation_header"),
24
- text = title,
25
- textAlign = textAlign,
26
- style = Typography.actionSBold.copy(
27
- fontSize = 15.sp,
28
- lineHeight = 22.sp,
29
- ),
30
- color = color,
31
- maxLines = 1,
32
- overflow = TextOverflow.Ellipsis
33
- )
34
- }
@@ -1,370 +0,0 @@
1
- package vn.momo.kits.navigation.component
2
-
3
- import androidx.compose.foundation.background
4
- import androidx.compose.foundation.border
5
- import androidx.compose.foundation.layout.Arrangement
6
- import androidx.compose.foundation.layout.Box
7
- import androidx.compose.foundation.layout.Column
8
- import androidx.compose.foundation.layout.Row
9
- import androidx.compose.foundation.layout.Spacer
10
- import androidx.compose.foundation.layout.fillMaxWidth
11
- import androidx.compose.foundation.layout.height
12
- import androidx.compose.foundation.layout.padding
13
- import androidx.compose.foundation.layout.size
14
- import androidx.compose.foundation.layout.width
15
- import androidx.compose.foundation.layout.widthIn
16
- import androidx.compose.foundation.shape.CircleShape
17
- import androidx.compose.foundation.shape.RoundedCornerShape
18
- import androidx.compose.foundation.text.BasicText
19
- import androidx.compose.foundation.text.TextAutoSize
20
- import androidx.compose.runtime.Composable
21
- import androidx.compose.runtime.Immutable
22
- import androidx.compose.runtime.remember
23
- import androidx.compose.ui.Alignment
24
- import androidx.compose.ui.Modifier
25
- import androidx.compose.ui.draw.clip
26
- import androidx.compose.ui.draw.clipToBounds
27
- import androidx.compose.ui.layout.ContentScale
28
- import androidx.compose.ui.text.TextStyle
29
- import androidx.compose.ui.text.style.TextOverflow
30
- import androidx.compose.ui.unit.Dp
31
- import androidx.compose.ui.unit.dp
32
- import androidx.compose.ui.unit.sp
33
- import vn.momo.kits.components.Image
34
- import vn.momo.kits.components.Options
35
- import vn.momo.kits.components.Skeleton
36
- import vn.momo.kits.components.Text
37
- import vn.momo.kits.const.AppTheme
38
- import vn.momo.kits.const.Colors
39
- import vn.momo.kits.const.Spacing
40
- import vn.momo.kits.const.Typography
41
- import vn.momo.kits.modifier.activeOpacityClickable
42
- import vn.momo.kits.navigation.component.HeaderTitle.User
43
- import vn.momo.kits.platform.getScreenDimensions
44
-
45
- @Composable
46
- fun HeaderUser(
47
- data: HeaderTitle
48
- ) {
49
- if (data !is User) return
50
-
51
- if (data.isLoading) {
52
- return TitleUserShimmer()
53
- }
54
-
55
- val maxWidth = getScreenDimensions().width.dp - 172.dp
56
-
57
- Row(
58
- modifier = Modifier
59
- .fillMaxWidth()
60
- .padding(vertical = Spacing.XS)
61
- .activeOpacityClickable(enabled = data.onPress != null, onClick = { data.onPress?.invoke() }),
62
- horizontalArrangement = Arrangement.SpaceBetween,
63
- verticalAlignment = Alignment.CenterVertically
64
- ) {
65
- Row(
66
- modifier = Modifier.widthIn(max = maxWidth),
67
- verticalAlignment = Alignment.CenterVertically
68
- ) {
69
- Box(modifier = Modifier.size(Spacing.XXL)) {
70
- AvatarGroup(urls = AvatarUrls(data.image ?: listOf()), title = data.title)
71
- if (data.dotColor != null) {
72
- Box(
73
- modifier = Modifier
74
- .align(Alignment.BottomEnd)
75
- .size(10.dp)
76
- .clip(CircleShape)
77
- .background(data.dotColor)
78
- )
79
- }
80
- }
81
-
82
- Spacer(Modifier.width(6.dp))
83
-
84
- Column(modifier = Modifier.weight(1f, fill = false)) {
85
- Row(verticalAlignment = Alignment.CenterVertically) {
86
- Text(
87
- text = data.title,
88
- color = data.tintColor,
89
- style = Typography.actionXsBold,
90
- maxLines = 1,
91
- overflow = TextOverflow.Ellipsis
92
- )
93
- if (data.icons.isNotEmpty()) {
94
- Spacer(Modifier.width(6.dp))
95
- Row(verticalAlignment = Alignment.CenterVertically) {
96
- data.icons.forEach { icon ->
97
- RemoteIcon16(url = icon)
98
- }
99
- }
100
- }
101
- }
102
-
103
- if (!data.subTitle.isNullOrEmpty()) {
104
- Spacer(Modifier.height(2.dp))
105
- Text(
106
- text = data.subTitle,
107
- color = data.tintColor,
108
- style = Typography.descriptionXsRegular,
109
- maxLines = 1,
110
- overflow = TextOverflow.Ellipsis
111
- )
112
- }
113
- }
114
- }
115
- }
116
- }
117
-
118
- @Composable
119
- private fun TitleUserShimmer() {
120
- val theme = AppTheme.current
121
- Row(
122
- modifier = Modifier
123
- .fillMaxWidth()
124
- .padding(vertical = Spacing.XS),
125
- verticalAlignment = Alignment.CenterVertically
126
- ) {
127
- Box(
128
- modifier = Modifier
129
- .size(Spacing.XXL)
130
- .clip(CircleShape)
131
- .background(theme.colors.border.default)
132
- ) {
133
- Skeleton()
134
- }
135
- Spacer(Modifier.width(Spacing.M / 2))
136
- Column(modifier = Modifier.fillMaxWidth()) {
137
- Box(
138
- modifier = Modifier
139
- .height(18.dp)
140
- .width(120.dp)
141
- .clip(RoundedCornerShape(8.dp))
142
- ) { Skeleton() }
143
- Spacer(Modifier.height(Spacing.XXS))
144
- Box(
145
- modifier = Modifier
146
- .height(12.dp)
147
- .width(120.dp)
148
- .clip(RoundedCornerShape(8.dp))
149
- ) { Skeleton() }
150
- }
151
- }
152
- }
153
-
154
- @Composable
155
- private fun AvatarGroup(
156
- urls: AvatarUrls?,
157
- title: String? = null,
158
- size: Dp = Spacing.XXL
159
- ) {
160
- val theme = AppTheme.current
161
- val modifierBorder = remember {
162
- Modifier.clip(CircleShape).border(width = (0.5).dp, color = theme.colors.border.default, shape = CircleShape)
163
- }
164
- val options = Options(
165
- contentScale = ContentScale.Crop,
166
- alignment = Alignment.Center
167
- )
168
-
169
- when (urls?.items?.size) {
170
- 0 -> InitialsAvatar(
171
- modifier = modifierBorder,
172
- name = title ?: "",
173
- fallbackInitials = null,
174
- size = size
175
- )
176
- 1 -> SingleAvatar(options = options, modifier = modifierBorder, urls.items[0], size)
177
- 2 -> TwoAvatar(options = options, modifier = modifierBorder, urls, size)
178
- 3 -> ThreeAvatar(options = options, modifier = modifierBorder, urls, size)
179
- 4 -> FourAvatar(options = options, modifier = modifierBorder, urls, size)
180
- else -> ManyAvatar(options = options, modifier = modifierBorder, urls!!, size)
181
- }
182
- }
183
-
184
- @Composable
185
- private fun SingleAvatar(options: Options, modifier: Modifier = Modifier, url: String, size: Dp) {
186
- Image(
187
- source = url,
188
- options = options,
189
- modifier = modifier
190
- .size(size)
191
- )
192
- }
193
-
194
- @Composable
195
- private fun TwoAvatar(options: Options, modifier: Modifier = Modifier, urls: AvatarUrls, size: Dp) {
196
- val child = 24.dp
197
- Box(modifier = Modifier.size(size)) {
198
- Image(
199
- source = urls.items[0],
200
- options = options,
201
- modifier = modifier
202
- .size(child)
203
- .align(Alignment.TopEnd)
204
- )
205
- Image(
206
- source = urls.items[1],
207
- options = options,
208
- modifier = modifier
209
- .size(child)
210
- .align(Alignment.BottomStart)
211
- )
212
- }
213
- }
214
-
215
- @Composable
216
- private fun ThreeAvatar(options: Options, modifier: Modifier = Modifier, urls: AvatarUrls, size: Dp) {
217
- val child = 16.dp
218
- Box(modifier = Modifier.size(size).padding(2.dp)) {
219
- Image(
220
- source = urls.items[0],
221
- options = options,
222
- modifier = modifier
223
- .size(child)
224
- .align(Alignment.BottomEnd)
225
- )
226
- Image(
227
- source = urls.items[1],
228
- options = options,
229
- modifier = modifier
230
- .size(child)
231
- .align(Alignment.TopCenter)
232
- )
233
- Image(
234
- source = urls.items[2],
235
- options = options,
236
- modifier = modifier
237
- .size(child)
238
- .align(Alignment.BottomStart)
239
- )
240
- }
241
- }
242
-
243
- @Composable
244
- private fun FourAvatar(options: Options, modifier: Modifier = Modifier, urls: AvatarUrls, size: Dp) {
245
- val child = 16.dp
246
- Box(modifier = Modifier.size(size).padding(1.dp)) {
247
- Image(
248
- source = urls.items[0],
249
- options = options,
250
- modifier = modifier
251
- .size(child)
252
- .align(Alignment.BottomStart)
253
- )
254
- Image(
255
- source = urls.items[1],
256
- options = options,
257
- modifier = modifier
258
- .size(child)
259
- .align(Alignment.BottomEnd)
260
- )
261
- Image(
262
- source = urls.items[2],
263
- options = options,
264
- modifier = modifier
265
- .size(child)
266
- .align(Alignment.TopEnd)
267
- )
268
- Image(
269
- source = urls.items[3],
270
- options = options,
271
- modifier = modifier
272
- .size(child)
273
- .align(Alignment.TopStart)
274
- )
275
- }
276
- }
277
-
278
- @Composable
279
- private fun ManyAvatar(options: Options, modifier: Modifier = Modifier, urls: AvatarUrls, size: Dp) {
280
- val child = 16.dp
281
- val more = urls.items.size - 3
282
- Box(modifier = Modifier.size(size).padding(1.dp)) {
283
- Image(
284
- source = urls.items[0],
285
- options = options,
286
- modifier = modifier
287
- .size(child)
288
- .align(Alignment.BottomStart)
289
- )
290
- Image(
291
- source = urls.items[1],
292
- options = options,
293
- modifier = modifier
294
- .size(child)
295
- .align(Alignment.TopEnd)
296
- )
297
- Image(
298
- source = urls.items[2],
299
- options = options,
300
- modifier = modifier
301
- .size(child)
302
- .align(Alignment.TopStart)
303
- )
304
- Box(
305
- modifier = modifier
306
- .size(child)
307
- .align(Alignment.BottomEnd)
308
- .background(Colors.pink_09)
309
- .padding(1.dp)
310
- .clipToBounds(),
311
- contentAlignment = Alignment.Center
312
- ) {
313
- BasicText(
314
- text = "+$more",
315
- style = TextStyle(
316
- color = Colors.pink_03
317
- ),
318
- maxLines = 1,
319
- autoSize = TextAutoSize.StepBased(
320
- minFontSize = 1.sp,
321
- maxFontSize = 10.sp,
322
- stepSize = 1.sp
323
- )
324
- )
325
- }
326
- }
327
- }
328
-
329
- @Composable
330
- private fun InitialsAvatar(
331
- modifier: Modifier = Modifier,
332
- name: String,
333
- fallbackInitials: String? = null,
334
- size: Dp = Spacing.XXL
335
- ) {
336
- val initials = remember(name, fallbackInitials) {
337
- fallbackInitials ?: run {
338
- val words = name.trim().split(Regex("\\s+")).takeLast(2)
339
- words.joinToString("") { it.firstOrNull()?.uppercase() ?: "" }
340
- }
341
- }
342
- Box(
343
- modifier = modifier
344
- .size(size)
345
- .background(Colors.pink_09),
346
- contentAlignment = Alignment.Center
347
- ) {
348
- Text(
349
- text = initials,
350
- color = Colors.pink_03,
351
- style = Typography.descriptionXsRegular
352
- )
353
- }
354
- }
355
-
356
- @Composable
357
- private fun RemoteIcon16(url: String) {
358
- Image(
359
- source = url,
360
- options = Options(
361
- contentScale = ContentScale.Crop
362
- ),
363
- modifier = Modifier
364
- .size(16.dp)
365
- .clip(RoundedCornerShape(4.dp)),
366
- )
367
- }
368
-
369
- @Immutable
370
- data class AvatarUrls(val items: List<String>)
@@ -1,131 +0,0 @@
1
- package vn.momo.kits.navigation.component
2
-
3
- import androidx.compose.animation.core.Animatable
4
- import androidx.compose.animation.core.tween
5
- import androidx.compose.foundation.border
6
- import androidx.compose.foundation.layout.Box
7
- import androidx.compose.foundation.layout.fillMaxWidth
8
- import androidx.compose.foundation.layout.offset
9
- import androidx.compose.runtime.Composable
10
- import androidx.compose.runtime.DisposableEffect
11
- import androidx.compose.runtime.LaunchedEffect
12
- import androidx.compose.runtime.getValue
13
- import androidx.compose.runtime.mutableStateOf
14
- import androidx.compose.runtime.remember
15
- import androidx.compose.runtime.rememberCoroutineScope
16
- import androidx.compose.runtime.setValue
17
- import androidx.compose.ui.Modifier
18
- import androidx.compose.ui.layout.onGloballyPositioned
19
- import androidx.compose.ui.platform.LocalDensity
20
- import androidx.compose.ui.unit.IntOffset
21
- import androidx.compose.ui.unit.dp
22
- import kotlinx.coroutines.delay
23
- import vn.momo.kits.application.IsShowBaseLineDebug
24
- import vn.momo.kits.const.Colors
25
- import vn.momo.kits.modifier.conditional
26
- import kotlinx.coroutines.launch
27
- import vn.momo.kits.const.AppNavigationBar
28
- import vn.momo.kits.navigation.LocalFooterHeightPx
29
- import vn.momo.kits.navigation.LocalNavigator
30
- import vn.momo.kits.navigation.LocalOptions
31
- import vn.momo.kits.navigation.OverplayComponentRegistry
32
-
33
- sealed class SnackBar(open val duration: Long? = null) {
34
- data class Custom(
35
- val content: @Composable () -> Unit,
36
- override val duration: Long? = 3000L
37
- ) : SnackBar(duration)
38
-
39
- data class Toast(
40
- override val duration: Long? = 3000L
41
- ) : SnackBar(duration)
42
- }
43
-
44
- @Composable
45
- fun SnackBar(
46
- data: SnackBar,
47
- onDismiss: (() -> Unit)?
48
- ) {
49
- val navigator = LocalNavigator.current
50
- val options = LocalOptions.current
51
- val density = LocalDensity.current
52
- val footerHeightPxState = LocalFooterHeightPx.current
53
- val navigationBar = AppNavigationBar.current
54
-
55
- val footerHeight = if (options.footerComponent != null) {
56
- footerHeightPxState.value
57
- } else {
58
- with(density){ navigationBar.toPx() }
59
- }.toInt()
60
-
61
- var startPosition by remember { mutableStateOf(Float.MAX_VALUE) }
62
- val targetPosition = 0f
63
-
64
- var offsetY by remember { mutableStateOf(Animatable(startPosition)) }
65
- val coroutineScope = rememberCoroutineScope()
66
-
67
- suspend fun openEvent() {
68
- offsetY.snapTo(startPosition)
69
- offsetY.animateTo(
70
- targetValue = targetPosition,
71
- animationSpec = tween(
72
- durationMillis = 350,
73
- )
74
- )
75
- }
76
-
77
- fun closeEvent() {
78
- coroutineScope.launch {
79
- offsetY.animateTo(
80
- targetValue = startPosition,
81
- animationSpec = tween(
82
- durationMillis = 200,
83
- )
84
- )
85
- navigator.hideSnackBar()
86
- }
87
- }
88
-
89
- LaunchedEffect(startPosition) {
90
- if (startPosition != Float.MAX_VALUE){
91
- openEvent()
92
- }
93
- }
94
-
95
- LaunchedEffect(data.duration) {
96
- val duration = data.duration
97
- if (duration != null) {
98
- delay(duration)
99
- navigator.hideSnackBar()
100
- }
101
- }
102
-
103
- DisposableEffect(Unit) {
104
- OverplayComponentRegistry.bindClose {
105
- closeEvent()
106
- }
107
- onDispose {
108
- onDismiss?.invoke()
109
- }
110
- }
111
-
112
- Box(
113
- modifier = Modifier
114
- .offset { IntOffset(0, offsetY.value.toInt() - footerHeight) }
115
- .onGloballyPositioned {
116
- if (startPosition != it.size.height.toFloat()) {
117
- startPosition = it.size.height.toFloat()
118
- offsetY = Animatable(startPosition)
119
- }
120
- }
121
- .fillMaxWidth()
122
- .conditional(IsShowBaseLineDebug) {
123
- border(1.dp, Colors.blue_03)
124
- }
125
- ) {
126
- when (data) {
127
- is SnackBar.Custom -> data.content()
128
- is SnackBar.Toast -> {}
129
- }
130
- }
131
- }
@@ -1,167 +0,0 @@
1
- package vn.momo.kits.navigation.tracking
2
-
3
- import vn.momo.kits.application.MiniAppContext
4
- import vn.momo.maxapi.IMaxApi
5
- import kotlin.time.Clock
6
- import kotlin.time.ExperimentalTime
7
-
8
- /**
9
- * Screen tracking state holder
10
- */
11
- class ScreenTrackingState {
12
- @OptIn(ExperimentalTime::class)
13
- var startTime: Long = Clock.System.now().toEpochMilliseconds()
14
- var endTime: Long = startTime
15
- var releaseNavigated: Boolean = false
16
- var releaseLoad: Boolean = false
17
- var releaseInteraction: Boolean = false
18
- var previousScreenName: String? = null
19
- var action: String = "push"
20
- }
21
-
22
- /**
23
- * Screen tracker for auto tracking events
24
- *
25
- * Tracks 3 main events:
26
- * - auto_screen_navigated: When screen is focused
27
- * - auto_screen_displayed: When screen finished loading
28
- * - auto_screen_interacted: When screen is ready for interaction
29
- */
30
- object ScreenTracker {
31
-
32
- private var lastScreenName: String? = null
33
-
34
- /**
35
- * Track screen navigation event
36
- * Called when screen is focused
37
- */
38
- fun trackScreenNavigated(
39
- maxApi: IMaxApi?,
40
- context: MiniAppContext?,
41
- screenName: String,
42
- action: String,
43
- state: ScreenTrackingState
44
- ) {
45
- if (state.releaseNavigated) return
46
-
47
- val previousScreen = lastScreenName
48
- lastScreenName = screenName
49
-
50
- println("Tracking screen navigated native kit: $screenName")
51
- maxApi?.track(
52
- eventName = "auto_screen_navigated",
53
- params = buildBaseParams(context, screenName).apply {
54
- put("pre_screen_name", previousScreen)
55
- put("state", "navigated")
56
- put("action", action)
57
- }
58
- )
59
-
60
- state.releaseNavigated = true
61
- state.previousScreenName = previousScreen
62
- }
63
-
64
- /**
65
- * Track screen displayed event
66
- * Called when screen finished loading all elements
67
- */
68
- fun trackScreenDisplayed(
69
- maxApi: IMaxApi?,
70
- context: MiniAppContext?,
71
- screenName: String,
72
- duration: Long,
73
- state: ScreenTrackingState
74
- ) {
75
- if (state.releaseLoad) return
76
-
77
- maxApi?.track(
78
- eventName = "auto_screen_displayed",
79
- params = buildBaseParams(context, screenName).apply {
80
- put("state", "load")
81
- put("duration", duration)
82
- }
83
- )
84
-
85
- state.releaseLoad = true
86
- }
87
-
88
- /**
89
- * Track screen interacted event
90
- * Called when screen is ready for user interaction
91
- */
92
- fun trackScreenInteracted(
93
- maxApi: IMaxApi?,
94
- context: MiniAppContext?,
95
- screenName: String,
96
- duration: Long,
97
- totalDuration: Long,
98
- state: ScreenTrackingState
99
- ) {
100
- if (state.releaseInteraction) return
101
-
102
- maxApi?.track(
103
- eventName = "auto_screen_interacted",
104
- params = buildBaseParams(context, screenName).apply {
105
- put("state", "interaction")
106
- put("duration", duration)
107
- put("total_duration", totalDuration)
108
- }
109
- )
110
-
111
- state.releaseInteraction = true
112
- }
113
-
114
- /**
115
- * Build base tracking params from MiniAppContext
116
- */
117
- private fun buildBaseParams(
118
- context: MiniAppContext?,
119
- screenName: String,
120
- componentName: String = "Screen"
121
- ): MutableMap<String, Any?> {
122
- return mutableMapOf(
123
- "app_id" to context?.appId,
124
- "feature_code" to context?.appCode,
125
- "screen_name" to screenName,
126
- "component_name" to componentName,
127
- "tracking_source" to 1
128
- )
129
- }
130
-
131
- /**
132
- * Track popup/modal displayed event
133
- *
134
- * @param popupName name of the popup/modal
135
- * @param parentScreenName the screen that shows the popup
136
- */
137
- fun trackPopupDisplayed(
138
- maxApi: IMaxApi?,
139
- context: MiniAppContext?,
140
- parentScreenName: String?
141
- ) {
142
- maxApi?.track(
143
- eventName = "auto_popup_displayed",
144
- params = mutableMapOf<String, Any?>(
145
- "screen_name" to parentScreenName,
146
- "tracking_source" to 1,
147
- "app_id" to context?.appId,
148
- "feature_code" to context?.appCode,
149
- "kits_version" to null,
150
- "component_name" to "Modal"
151
- )
152
- )
153
- }
154
-
155
- /**
156
- * Get previous screen name for back navigation detection
157
- */
158
- fun getLastScreenName(): String? = lastScreenName
159
-
160
- /**
161
- * Reset tracker (for testing or cleanup)
162
- */
163
- @Suppress("UNUSED")
164
- fun reset() {
165
- lastScreenName = null
166
- }
167
- }