@momo-kits/native-kits 0.162.2-beta.26 → 0.162.2-beta.27-debug

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/CLAUDE.md +1 -1
  2. package/build.gradle.kts +11 -0
  3. package/compose/build.gradle.kts +190 -0
  4. package/compose/build.gradle.kts.backup +190 -0
  5. package/compose/compose.podspec +47 -0
  6. package/compose/src/androidMain/kotlin/vn/momo/kits/navigation/ScrollToTop.android.kt +6 -0
  7. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +123 -0
  8. package/compose/src/commonMain/composeResources/font/momosignature.otf +0 -0
  9. package/compose/src/commonMain/composeResources/font/momotrustdisplay.otf +0 -0
  10. package/compose/src/commonMain/composeResources/font/sfprotext_black.otf +0 -0
  11. package/compose/src/commonMain/composeResources/font/sfprotext_black.ttf +0 -0
  12. package/compose/src/commonMain/composeResources/font/sfprotext_bold.ttf +0 -0
  13. package/compose/src/commonMain/composeResources/font/sfprotext_heavy.ttf +0 -0
  14. package/compose/src/commonMain/composeResources/font/sfprotext_light.ttf +0 -0
  15. package/compose/src/commonMain/composeResources/font/sfprotext_medium.ttf +0 -0
  16. package/compose/src/commonMain/composeResources/font/sfprotext_regular.ttf +0 -0
  17. package/compose/src/commonMain/composeResources/font/sfprotext_semibold.ttf +0 -0
  18. package/compose/src/commonMain/composeResources/font/sfprotext_thin.otf +0 -0
  19. package/compose/src/commonMain/composeResources/font/sfprotext_thin.ttf +0 -0
  20. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.otf +0 -0
  21. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.ttf +0 -0
  22. package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +52 -0
  23. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +101 -0
  24. package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +183 -0
  25. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +207 -0
  26. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +39 -0
  27. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +86 -0
  28. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +76 -0
  29. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +76 -0
  30. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +294 -0
  31. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +33 -0
  32. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +826 -0
  33. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Localize.kt +269 -0
  34. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +107 -0
  35. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +378 -0
  36. package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +69 -0
  37. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Avatar.kt +157 -0
  38. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +82 -0
  39. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +32 -0
  40. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +338 -0
  41. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BaselineView.kt +175 -0
  42. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +356 -0
  43. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Carousel.kt +113 -0
  44. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +89 -0
  45. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +128 -0
  46. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Collapse.kt +209 -0
  47. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +543 -0
  48. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +23 -0
  49. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +76 -0
  50. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +140 -0
  51. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +231 -0
  52. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +112 -0
  53. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +477 -0
  54. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +114 -0
  55. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +214 -0
  56. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +240 -0
  57. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +216 -0
  58. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +259 -0
  59. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +182 -0
  60. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +343 -0
  61. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Loader.kt +108 -0
  62. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +56 -0
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +41 -0
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +84 -0
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +40 -0
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +328 -0
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +97 -0
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ProgressInfo.kt +310 -0
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +59 -0
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Rating.kt +87 -0
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +17 -0
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +90 -0
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Slider.kt +323 -0
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +217 -0
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Steps.kt +473 -0
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/components/SuggestAction.kt +122 -0
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Swipe.kt +199 -0
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +91 -0
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +470 -0
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +88 -0
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +131 -0
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +203 -0
  83. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +498 -0
  84. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +175 -0
  85. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Uploader.kt +182 -0
  86. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +193 -0
  87. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +29 -0
  88. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +234 -0
  89. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +188 -0
  90. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +306 -0
  91. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +12 -0
  92. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +16 -0
  93. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +188 -0
  94. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +270 -0
  95. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +2 -0
  96. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +35 -0
  97. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +2 -0
  98. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +52 -0
  99. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +66 -0
  100. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +11 -0
  101. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +104 -0
  102. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +48 -0
  103. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +51 -0
  104. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +253 -0
  105. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +129 -0
  106. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +100 -0
  107. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +154 -0
  108. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +360 -0
  109. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ScrollToTop.kt +8 -0
  110. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +581 -0
  111. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +156 -0
  112. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +225 -0
  113. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +86 -0
  114. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +169 -0
  115. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +320 -0
  116. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +81 -0
  117. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +309 -0
  118. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +34 -0
  119. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +360 -0
  120. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +132 -0
  121. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/tracking/ScreenTracker.kt +128 -0
  122. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/ComposeLottieAnimation.kt +70 -0
  123. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +58 -0
  124. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +1329 -0
  125. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +55 -0
  126. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Tracking.kt +15 -0
  127. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +105 -0
  128. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/ScrollToTop.ios.kt +32 -0
  129. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +184 -0
  130. package/gradle/libs.versions.toml +69 -0
  131. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  132. package/gradle/wrapper/gradle-wrapper.properties +8 -0
  133. package/gradle.properties +26 -0
  134. package/gradlew +252 -0
  135. package/gradlew.bat +94 -0
  136. package/ios/Application/ApplicationEnvironment.swift +0 -11
  137. package/ios/Application/Components.swift +44 -34
  138. package/ios/Application/FloatingButton.swift +9 -10
  139. package/ios/Application/HeaderRight.swift +45 -79
  140. package/ios/Application/Screen.swift +1 -2
  141. package/ios/Badge/Badge.swift +14 -11
  142. package/ios/Badge/BadgeRibbon.swift +21 -12
  143. package/ios/Button/Button.swift +22 -61
  144. package/ios/Checkbox/Checkbox.swift +13 -14
  145. package/ios/Chip/Chip.swift +9 -23
  146. package/ios/Colors+Radius+Spacing/Colors.swift +12 -12
  147. package/ios/Extensions/Color++.swift +0 -32
  148. package/ios/Icon/Icon.swift +1 -6
  149. package/ios/Input/Input.swift +25 -41
  150. package/ios/Input/InputPhoneNumber.swift +19 -20
  151. package/ios/Input/InputSearch.swift +47 -100
  152. package/ios/Input/InputTextArea.swift +40 -66
  153. package/ios/Popup/PopupDisplay.swift +16 -8
  154. package/ios/Popup/PopupInput.swift +8 -2
  155. package/ios/Swipeable/SwipeCell.swift +0 -185
  156. package/ios/Swipeable/SwipeCellModel.swift +0 -21
  157. package/ios/Typography/Text.swift +5 -79
  158. package/ios/Typography/Typography.swift +0 -3
  159. package/ios/native-kits.podspec +8 -61
  160. package/package.json +1 -1
  161. package/publish.sh +0 -50
  162. package/settings.gradle.kts +64 -0
  163. package/.claude/settings.local.json +0 -39
  164. package/ios/Application/Navigation/BottomTab/BottomTab.swift +0 -103
  165. package/ios/Application/Navigation/BottomTab/BottomTabBar.swift +0 -215
  166. package/ios/Application/Navigation/BottomTab/CurvedContainer.swift +0 -65
  167. package/ios/Application/Navigation/HeaderBackProps.swift +0 -66
  168. package/ios/Application/Navigation/HeaderTitle.swift +0 -57
  169. package/ios/Application/Navigation/HeaderUser.swift +0 -209
  170. package/ios/Application/Navigation/NavigationContainer.swift +0 -176
  171. package/ios/Application/Navigation/NavigationOptions.swift +0 -109
  172. package/ios/Application/Navigation/Navigator.swift +0 -364
  173. package/ios/Application/Navigation/Overplay/BottomSheet.swift +0 -188
  174. package/ios/Application/Navigation/Overplay/ModalScreen.swift +0 -68
  175. package/ios/Application/Navigation/Overplay/SnackBar.swift +0 -144
  176. package/ios/Application/Navigation/component/Header.swift +0 -178
  177. package/ios/Application/Navigation/component/HeaderBackground.swift +0 -83
  178. package/ios/Application/Navigation/component/HeaderColor.swift +0 -65
  179. package/ios/Application/StackScreen.swift +0 -453
  180. package/ios/Avatar/Avatar.swift +0 -193
  181. package/ios/BaselineView/BaselineView.swift +0 -163
  182. package/ios/Carousel/Carousel.swift +0 -181
  183. package/ios/Collapse/Collapse.swift +0 -182
  184. package/ios/Colors+Radius+Spacing/Theme.swift +0 -295
  185. package/ios/DateTimePicker/DateTimePicker.swift +0 -210
  186. package/ios/DateTimePicker/DateTimePickerTypes.swift +0 -55
  187. package/ios/DateTimePicker/DateTimePickerUtils.swift +0 -167
  188. package/ios/DateTimePicker/WheelPicker.swift +0 -161
  189. package/ios/Divider/Divider.swift +0 -16
  190. package/ios/IconButton/IconButton.swift +0 -112
  191. package/ios/InputDropDown/InputDropDown.swift +0 -198
  192. package/ios/InputMoney/InputMoney.swift +0 -335
  193. package/ios/InputOTP/InputOTP.swift +0 -210
  194. package/ios/Loader/Loader.swift +0 -113
  195. package/ios/MoMoUIKits.podspec +0 -5
  196. package/ios/Pagination/PaginationDot.swift +0 -61
  197. package/ios/Pagination/PaginationNumber.swift +0 -35
  198. package/ios/Pagination/PaginationScroll.swift +0 -101
  199. package/ios/Pagination/PaginationWhiteDot.swift +0 -37
  200. package/ios/Popup/PopupNotify.swift +0 -219
  201. package/ios/ProgressInfo/ProgressInfo.swift +0 -294
  202. package/ios/Radio/Radio.swift +0 -70
  203. package/ios/Rating/Rating.swift +0 -82
  204. package/ios/Resources/MoMoUIKitsColors.xcassets/AccentColor.colorset/Contents.json +0 -11
  205. package/ios/Resources/MoMoUIKitsColors.xcassets/Background.colorset/Contents.json +0 -38
  206. package/ios/Resources/MoMoUIKitsColors.xcassets/Border.colorset/Contents.json +0 -38
  207. package/ios/Resources/MoMoUIKitsColors.xcassets/Card.colorset/Contents.json +0 -38
  208. package/ios/Resources/MoMoUIKitsColors.xcassets/Contents.json +0 -6
  209. package/ios/Resources/MoMoUIKitsColors.xcassets/Error.colorset/Contents.json +0 -38
  210. package/ios/Resources/MoMoUIKitsColors.xcassets/Primary.colorset/Contents.json +0 -38
  211. package/ios/Resources/MoMoUIKitsColors.xcassets/PrimaryDark.colorset/Contents.json +0 -38
  212. package/ios/Resources/MoMoUIKitsColors.xcassets/PrimaryLight.colorset/Contents.json +0 -38
  213. package/ios/Resources/MoMoUIKitsColors.xcassets/Secondary.colorset/Contents.json +0 -38
  214. package/ios/Resources/MoMoUIKitsColors.xcassets/Success.colorset/Contents.json +0 -38
  215. package/ios/Resources/MoMoUIKitsColors.xcassets/Text.colorset/Contents.json +0 -38
  216. package/ios/Resources/MoMoUIKitsColors.xcassets/TextSecondary.colorset/Contents.json +0 -38
  217. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/Contents.json +0 -9
  218. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-default.colorset/Contents.json +0 -38
  219. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-disable.colorset/Contents.json +0 -38
  220. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-pressed.colorset/Contents.json +0 -38
  221. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-selected.colorset/Contents.json +0 -38
  222. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-surface.colorset/Contents.json +0 -38
  223. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/background-tonal.colorset/Contents.json +0 -38
  224. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/border-default.colorset/Contents.json +0 -38
  225. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/border-disable.colorset/Contents.json +0 -38
  226. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/gradient.colorset/Contents.json +0 -38
  227. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/primary.colorset/Contents.json +0 -38
  228. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/secondary.colorset/Contents.json +0 -38
  229. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/success-container.colorset/Contents.json +0 -38
  230. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/success-primary.colorset/Contents.json +0 -38
  231. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/success-secondary.colorset/Contents.json +0 -38
  232. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/text-default.colorset/Contents.json +0 -38
  233. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/text-disable.colorset/Contents.json +0 -38
  234. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/text-hint.colorset/Contents.json +0 -38
  235. package/ios/Resources/MoMoUIKitsColors.xcassets/ThemeColors/text-secondary.colorset/Contents.json +0 -38
  236. package/ios/Resources/MoMoUIKitsColors.xcassets/Warning.colorset/Contents.json +0 -38
  237. package/ios/Skeleton/Skeleton.swift +0 -99
  238. package/ios/Slider/Slider.swift +0 -237
  239. package/ios/Stepper/Stepper.swift +0 -220
  240. package/ios/Steps/Steps.swift +0 -451
  241. package/ios/SuggestAction/SuggestAction.swift +0 -97
  242. package/ios/TabView/TabView.swift +0 -530
  243. package/ios/Tag/Tag.swift +0 -98
  244. package/ios/Title/Title.swift +0 -269
  245. package/ios/Tooltip/Tooltip.swift +0 -482
  246. package/ios/Typography/FontScaleStore.swift +0 -19
  247. package/ios/Uploader/Uploader.swift +0 -183
  248. package/ios-demo/MoMoUIKitsDemo.podspec +0 -20
  249. package/ios-demo/Resources/dot_loading.json +0 -558
  250. package/ios-demo/Resources/icon.json +0 -4052
  251. package/ios-demo/Resources/lottie_circle_loader.json +0 -1
  252. package/ios-demo/Sources/MoMoUIKitsDemo/DemoScaffold.swift +0 -48
  253. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsBadgeDemoView.swift +0 -25
  254. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsButtonDemoView.swift +0 -26
  255. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsCheckboxDemoView.swift +0 -19
  256. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsChipDemoView.swift +0 -33
  257. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsInputDemoView.swift +0 -48
  258. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsPopupDemoView.swift +0 -21
  259. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsRadioDemoView.swift +0 -17
  260. package/ios-demo/Sources/MoMoUIKitsDemo/Demos/UIKitsTypographyDemoView.swift +0 -28
  261. package/ios-demo/Sources/MoMoUIKitsDemo/MoMoUIKitsDemoContext.swift +0 -31
  262. package/ios-demo/Sources/MoMoUIKitsDemo/MoMoUIKitsDemoFactory.swift +0 -24
  263. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/AnimatedHeaderDemo.swift +0 -110
  264. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/AvatarDemo.swift +0 -93
  265. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/BadgeDemo.swift +0 -269
  266. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/BaselineView.swift +0 -117
  267. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/BottomTabDemo.swift +0 -89
  268. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ButtonDemo.swift +0 -100
  269. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/CarouselDemo.swift +0 -126
  270. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/CheckboxDemo.swift +0 -63
  271. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ChipDemo.swift +0 -20
  272. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/CollapseDemo.swift +0 -93
  273. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ContentView.swift +0 -107
  274. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/DateTimePickerDemo.swift +0 -124
  275. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/DividerDemo.swift +0 -14
  276. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/HeaderUserDemo.swift +0 -49
  277. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/Home.swift +0 -278
  278. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/IconButtonDemo.swift +0 -58
  279. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ImageDemo.swift +0 -78
  280. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InformationDemo.swift +0 -138
  281. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputDemo.swift +0 -111
  282. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputDropDownDemo.swift +0 -136
  283. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputMoneyDemo.swift +0 -107
  284. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputOTPDemo.swift +0 -73
  285. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputPhoneNumberDemo.swift +0 -100
  286. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputSearchDemo.swift +0 -32
  287. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/InputTextAreaDemo.swift +0 -57
  288. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/LoaderDemo.swift +0 -70
  289. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/NavigationDemo.swift +0 -227
  290. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PaginationDemo.swift +0 -72
  291. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PopupDisplayDemo.swift +0 -175
  292. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PopupNotifyDemo.swift +0 -121
  293. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/PopupPromotionDemo.swift +0 -76
  294. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ProgressInfoDemo.swift +0 -89
  295. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/RadioDemo.swift +0 -32
  296. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/RatingDemo.swift +0 -56
  297. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SkeletonDemo.swift +0 -32
  298. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SliderDemo.swift +0 -150
  299. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SnackBarDemo.swift +0 -138
  300. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/StepperDemo.swift +0 -103
  301. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/StepsDemo.swift +0 -94
  302. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SuggestActionDemo.swift +0 -79
  303. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SwipeDemo.swift +0 -152
  304. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/SwitchDemo.swift +0 -33
  305. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TabViewDemo.swift +0 -190
  306. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TagDemo.swift +0 -34
  307. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/ThemeDemo.swift +0 -182
  308. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TitleDemo.swift +0 -109
  309. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TooltipDemo.swift +0 -187
  310. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/TypographyDemo.swift +0 -87
  311. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/UploaderDemo.swift +0 -131
  312. package/ios-demo/Sources/MoMoUIKitsDemo/SwiftUIDemoBrowserView.swift +0 -51
  313. package/ios-demo/Sources/MoMoUIKitsDemo/UIKitsDemoModels.swift +0 -15
  314. package/ios-demo/Sources/MoMoUIKitsDemo/UIKitsDemoRegistry.swift +0 -73
  315. package/scripts/gen-ios-color.mjs +0 -136
package/CLAUDE.md CHANGED
@@ -40,7 +40,7 @@ Publishing is automated (`publish.sh` + GitLab CI on `[ci build]` / `main`). Do
40
40
  ## Architecture essentials
41
41
 
42
42
  - **Entry point:** wrap content in `NavigationContainer(...)` from `navigation/`. It builds the `Navigator`, takes a host-supplied `Localize` (falls back to an empty one), and provides the CompositionLocals below. **Do not use** `ApplicationContainer` (`application/NavigationContainer.kt`) — deprecated and does **not** wire `LocalLocalize` / `LocalNavigator` / `LocalMaxApi`.
43
- - **Configuration flows via CompositionLocals**, not params. Public ones: `AppTheme`, `AppStatusBar`, `AppNavigationBar` (`const/Theme.kt`); `ApplicationContext`, `AppConfig`, `AppLanguage`, `LocalLocalize` (`application/`); `LocalNavigator`, `LocalMaxApi` (`navigation/`). Read with `X.current`.
43
+ - **Configuration flows via CompositionLocals**, not params. Public ones: `AppTheme`, `AppStatusBar`, `AppNavigationBar` (`const/Theme.kt`); `ApplicationContext`, `AppConfig`, `AppLanguage`, `LocalLocalize`, `ScaleSizeMaxRate` (`application/`); `LocalNavigator`, `LocalMaxApi` (`navigation/`). Read with `X.current`.
44
44
  - **Platform code** goes through `expect`/`actual` in `platform/` — never reference Android/iOS APIs from `commonMain` directly.
45
45
  - **Native bridge:** `IMaxApi` (`vn.momo.maxapi`, exposed as `LocalMaxApi`) is the host-app bridge (dismiss, tracking, device info, language).
46
46
  - Navigation uses a runtime `DynamicScreenRegistry`; overlays (modal/bottom-sheet/snackbar) go through `Navigator` + `OverplayComponentRegistry`.
@@ -0,0 +1,11 @@
1
+ plugins {
2
+ // this is necessary to avoid the plugins to be loaded multiple times
3
+ // in each subproject's classloader
4
+ alias(libs.plugins.android.application) apply false
5
+ alias(libs.plugins.android.library) apply false
6
+ alias(libs.plugins.compose) apply false
7
+ alias(libs.plugins.kotlin.compose.compiler) apply false
8
+ alias(libs.plugins.jetbrains.kotlin.multiplatform) apply false
9
+ alias(libs.plugins.jetbrains.kotlin.serialization) apply false
10
+ alias(libs.plugins.vanniktech.mavenPublish) apply false
11
+ }
@@ -0,0 +1,190 @@
1
+ // import com.vanniktech.maven.publish.JavadocJar
2
+ // import com.vanniktech.maven.publish.KotlinMultiplatform
3
+ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
4
+
5
+ plugins {
6
+ alias(libs.plugins.jetbrains.kotlin.multiplatform)
7
+ alias(libs.plugins.android.library)
8
+ alias(libs.plugins.compose)
9
+ alias(libs.plugins.kotlin.compose.compiler)
10
+ // alias(libs.plugins.vanniktech.mavenPublish)
11
+ id(libs.plugins.jetbrains.kotlin.cocoapods.get().pluginId)
12
+ kotlin("plugin.serialization")
13
+ }
14
+
15
+ val gitlabName: String = findProperty("name") as String? ?: ""
16
+ val gitlabRepo: String = findProperty("repo") as String? ?: ""
17
+ val gitlabUrl: String = findProperty("url") as String? ?: ""
18
+ val gitlabGroup: String = findProperty("group") as String? ?: ""
19
+ val gitlabArtifactId: String = findProperty("artifact.id") as String? ?: ""
20
+ val gitlabVersion: String = findProperty("version") as String? ?: ""
21
+ val gitlabUser: String = findProperty("gitlab.user") as String? ?: ""
22
+ val gitlabKey: String = findProperty("gitlab.password") as String? ?: ""
23
+
24
+ kotlin {
25
+ androidTarget {
26
+ compilerOptions {
27
+ jvmTarget.set(JvmTarget.JVM_17)
28
+ }
29
+ publishLibraryVariants("release")
30
+ }
31
+
32
+ val fwName = gitlabArtifactId
33
+ val iosTargets = listOf(iosArm64(), iosSimulatorArm64())
34
+ iosTargets.forEach {
35
+ it.binaries.framework {
36
+ baseName = fwName
37
+ binaryOption("bundleId", "$gitlabGroup.$fwName")
38
+ isStatic = true
39
+ }
40
+ }
41
+
42
+ cocoapods {
43
+ version = "0.162.2-beta.27-debug"
44
+ summary = "IOS Shared module"
45
+ homepage = "https://momo.vn"
46
+ ios.deploymentTarget = "15.0"
47
+
48
+ framework {
49
+ baseName = fwName
50
+ isStatic = true
51
+ }
52
+
53
+ pod("lottie-ios") {
54
+ moduleName = "Lottie"
55
+ version = "4.4.3"
56
+ extraOpts += listOf("-compiler-option", "-fmodules")
57
+ }
58
+ }
59
+
60
+ sourceSets {
61
+ all {
62
+ languageSettings.optIn("vn.momo.kits.modifier.InternalApi")
63
+ }
64
+ commonMain.dependencies {
65
+ implementation(compose.runtime)
66
+ implementation(compose.material)
67
+ implementation(compose.material3)
68
+ implementation(compose.components.resources)
69
+ implementation(libs.compose.ui.backhandler)
70
+ implementation(libs.ktor.client.core)
71
+ implementation(libs.jetbrains.coroutines.core)
72
+ implementation(libs.navigation.multiplatform)
73
+ implementation(libs.coil.multiplatform.compose)
74
+ implementation(libs.coil.multiplatform.core)
75
+ implementation(libs.coil.multiplatform.network.ktor)
76
+ implementation(libs.jetbrains.serialization.json)
77
+ implementation(libs.kotlinx.datetime)
78
+ api(libs.native.max.api)
79
+ implementation(libs.compottie)
80
+ implementation(libs.gif.image)
81
+ }
82
+ androidMain.dependencies {
83
+ implementation(libs.ktor.client.okhttp)
84
+ implementation(libs.airbnb.lottie)
85
+ }
86
+ iosMain.dependencies {
87
+ implementation(libs.ktor.client.darwin)
88
+ }
89
+ }
90
+ }
91
+
92
+ android {
93
+ namespace = "vn.momo.kits.kits"
94
+ compileSdk = 35
95
+ compileOptions {
96
+ sourceCompatibility = JavaVersion.VERSION_17
97
+ targetCompatibility = JavaVersion.VERSION_17
98
+ }
99
+ defaultConfig {
100
+ minSdk = 24
101
+ }
102
+ }
103
+
104
+ dependencies {
105
+ }
106
+
107
+ repositories {
108
+ google {
109
+ mavenContent {
110
+ includeGroupAndSubgroups("androidx")
111
+ includeGroupAndSubgroups("com.android")
112
+ includeGroupAndSubgroups("com.google")
113
+ }
114
+ }
115
+ mavenCentral()
116
+ maven { url = uri("https://maven.pkg.jetbrains.space/public/p/compose/dev") }
117
+ maven {
118
+ url = uri("https://gitlab.mservice.com.vn/api/v4/projects/5400/packages/maven")
119
+ credentials {username = "download_packages"; password = "gldt-bjDqLpU_sPcHDuXau2ws" }
120
+ }
121
+ maven {
122
+ url = uri("https://artifacts.mservice.com.vn/repository/maven-momo-app/")
123
+ credentials {
124
+ username = "viewer"
125
+ password = "viewer"
126
+ }
127
+ isAllowInsecureProtocol = true
128
+ }
129
+ }
130
+
131
+ compose {
132
+ resources {
133
+ publicResClass = true
134
+ packageOfResClass = "vn.momo.uikits.resources"
135
+ generateResClass = always
136
+ }
137
+ }
138
+
139
+ // publishing {
140
+ // repositories {
141
+ // maven {
142
+ // name = "${gitlabRepo}Packages"
143
+ // credentials {
144
+ // username = gitlabUser
145
+ // password = gitlabKey
146
+ // }
147
+ // url = uri("$gitlabUrl")
148
+ // }
149
+ // }
150
+ // }
151
+
152
+ // mavenPublishing {
153
+ // configure(
154
+ // KotlinMultiplatform(
155
+ // javadocJar = JavadocJar.Empty(),
156
+ // sourcesJar = true,
157
+ // androidVariantsToPublish = listOf("release")
158
+ // )
159
+ // )
160
+ //
161
+ // repositories {
162
+ // maven {
163
+ // name = "${gitlabRepo}Packages"
164
+ // credentials { username = gitlabUser; password = gitlabKey }
165
+ // url = uri("$gitlabUrl")
166
+ // }
167
+ // }
168
+ //
169
+ // coordinates(gitlabGroup.toString(), gitlabArtifactId, gitlabVersion.toString())
170
+ //
171
+ // pom {
172
+ // name = "$gitlabName Klib"
173
+ // description = "$gitlabName"
174
+ // url = "https://gitlab.mservice.com.vn"
175
+ // licenses {
176
+ // license {
177
+ // name = "The Apache License, Version 2.0"
178
+ // url = "https://www.apache.org/licenses/LICENSE-2.0.txt"
179
+ // distribution = "https://www.apache.org/licenses/LICENSE-2.0.txt"
180
+ // }
181
+ // }
182
+ // developers {
183
+ // developer {
184
+ // id = "kotlin-hands-on"
185
+ // name = "Kotlin Developer Advocate"
186
+ // url = "https://github.com/kotlin-hands-on/"
187
+ // }
188
+ // }
189
+ // }
190
+ // }
@@ -0,0 +1,190 @@
1
+ import com.vanniktech.maven.publish.JavadocJar
2
+ import com.vanniktech.maven.publish.KotlinMultiplatform
3
+ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
4
+
5
+ plugins {
6
+ alias(libs.plugins.jetbrains.kotlin.multiplatform)
7
+ alias(libs.plugins.android.library)
8
+ alias(libs.plugins.compose)
9
+ alias(libs.plugins.kotlin.compose.compiler)
10
+ alias(libs.plugins.vanniktech.mavenPublish)
11
+ id(libs.plugins.jetbrains.kotlin.cocoapods.get().pluginId)
12
+ kotlin("plugin.serialization")
13
+ }
14
+
15
+ val gitlabName: String = findProperty("name") as String? ?: ""
16
+ val gitlabRepo: String = findProperty("repo") as String? ?: ""
17
+ val gitlabUrl: String = findProperty("url") as String? ?: ""
18
+ val gitlabGroup: String = findProperty("group") as String? ?: ""
19
+ val gitlabArtifactId: String = findProperty("artifact.id") as String? ?: ""
20
+ val gitlabVersion: String = findProperty("version") as String? ?: ""
21
+ val gitlabUser: String = findProperty("gitlab.user") as String? ?: ""
22
+ val gitlabKey: String = findProperty("gitlab.password") as String? ?: ""
23
+
24
+ kotlin {
25
+ androidTarget {
26
+ compilerOptions {
27
+ jvmTarget.set(JvmTarget.JVM_17)
28
+ }
29
+ publishLibraryVariants("release")
30
+ }
31
+
32
+ val fwName = gitlabArtifactId
33
+ val iosTargets = listOf(iosArm64(), iosSimulatorArm64())
34
+ iosTargets.forEach {
35
+ it.binaries.framework {
36
+ baseName = fwName
37
+ binaryOption("bundleId", "$gitlabGroup.$fwName")
38
+ isStatic = true
39
+ }
40
+ }
41
+
42
+ cocoapods {
43
+ version = gitlabVersion
44
+ summary = "IOS Shared module"
45
+ homepage = "https://momo.vn"
46
+ ios.deploymentTarget = "15.0"
47
+
48
+ framework {
49
+ baseName = fwName
50
+ isStatic = true
51
+ }
52
+
53
+ pod("lottie-ios") {
54
+ moduleName = "Lottie"
55
+ version = "4.4.3"
56
+ extraOpts += listOf("-compiler-option", "-fmodules")
57
+ }
58
+ }
59
+
60
+ sourceSets {
61
+ all {
62
+ languageSettings.optIn("vn.momo.kits.modifier.InternalApi")
63
+ }
64
+ commonMain.dependencies {
65
+ implementation(compose.runtime)
66
+ implementation(compose.material)
67
+ implementation(compose.material3)
68
+ implementation(compose.components.resources)
69
+ implementation(libs.compose.ui.backhandler)
70
+ implementation(libs.ktor.client.core)
71
+ implementation(libs.jetbrains.coroutines.core)
72
+ implementation(libs.navigation.multiplatform)
73
+ implementation(libs.coil.multiplatform.compose)
74
+ implementation(libs.coil.multiplatform.core)
75
+ implementation(libs.coil.multiplatform.network.ktor)
76
+ implementation(libs.jetbrains.serialization.json)
77
+ implementation(libs.kotlinx.datetime)
78
+ api(libs.native.max.api)
79
+ implementation(libs.compottie)
80
+ implementation(libs.gif.image)
81
+ }
82
+ androidMain.dependencies {
83
+ implementation(libs.ktor.client.okhttp)
84
+ implementation(libs.airbnb.lottie)
85
+ }
86
+ iosMain.dependencies {
87
+ implementation(libs.ktor.client.darwin)
88
+ }
89
+ }
90
+ }
91
+
92
+ android {
93
+ namespace = "$gitlabGroup.$gitlabArtifactId"
94
+ compileSdk = libs.versions.android.compileSdk.get().toInt()
95
+ compileOptions {
96
+ sourceCompatibility = JavaVersion.VERSION_17
97
+ targetCompatibility = JavaVersion.VERSION_17
98
+ }
99
+ defaultConfig {
100
+ minSdk = libs.versions.android.minSdk.get().toInt()
101
+ }
102
+ }
103
+
104
+ dependencies {
105
+ }
106
+
107
+ repositories {
108
+ google {
109
+ mavenContent {
110
+ includeGroupAndSubgroups("androidx")
111
+ includeGroupAndSubgroups("com.android")
112
+ includeGroupAndSubgroups("com.google")
113
+ }
114
+ }
115
+ mavenCentral()
116
+ maven { url = uri("https://maven.pkg.jetbrains.space/public/p/compose/dev") }
117
+ maven {
118
+ url = uri("https://gitlab.mservice.com.vn/api/v4/projects/5400/packages/maven")
119
+ credentials {username = "download_packages"; password = "gldt-bjDqLpU_sPcHDuXau2ws" }
120
+ }
121
+ maven {
122
+ url = uri("https://artifacts.mservice.com.vn/repository/maven-momo-app/")
123
+ credentials {
124
+ username = "viewer"
125
+ password = "viewer"
126
+ }
127
+ isAllowInsecureProtocol = true
128
+ }
129
+ }
130
+
131
+ compose {
132
+ resources {
133
+ publicResClass = true
134
+ packageOfResClass = "vn.momo.uikits.resources"
135
+ generateResClass = always
136
+ }
137
+ }
138
+
139
+ publishing {
140
+ repositories {
141
+ maven {
142
+ name = "${gitlabRepo}Packages"
143
+ credentials {
144
+ username = gitlabUser
145
+ password = gitlabKey
146
+ }
147
+ url = uri("$gitlabUrl")
148
+ }
149
+ }
150
+ }
151
+
152
+ mavenPublishing {
153
+ configure(
154
+ KotlinMultiplatform(
155
+ javadocJar = JavadocJar.Empty(),
156
+ sourcesJar = true,
157
+ androidVariantsToPublish = listOf("release")
158
+ )
159
+ )
160
+
161
+ repositories {
162
+ maven {
163
+ name = "${gitlabRepo}Packages"
164
+ credentials { username = gitlabUser; password = gitlabKey }
165
+ url = uri("$gitlabUrl")
166
+ }
167
+ }
168
+
169
+ coordinates(gitlabGroup.toString(), gitlabArtifactId, gitlabVersion.toString())
170
+
171
+ pom {
172
+ name = "$gitlabName Klib"
173
+ description = "$gitlabName"
174
+ url = "https://gitlab.mservice.com.vn"
175
+ licenses {
176
+ license {
177
+ name = "The Apache License, Version 2.0"
178
+ url = "https://www.apache.org/licenses/LICENSE-2.0.txt"
179
+ distribution = "https://www.apache.org/licenses/LICENSE-2.0.txt"
180
+ }
181
+ }
182
+ developers {
183
+ developer {
184
+ id = "kotlin-hands-on"
185
+ name = "Kotlin Developer Advocate"
186
+ url = "https://github.com/kotlin-hands-on/"
187
+ }
188
+ }
189
+ }
190
+ }
@@ -0,0 +1,47 @@
1
+ Pod::Spec.new do |spec|
2
+ spec.name = 'compose'
3
+ spec.version = '0.162.2-beta.19'
4
+ spec.homepage = 'https://momo.vn'
5
+ spec.source = { :http=> ''}
6
+ spec.authors = ''
7
+ spec.license = ''
8
+ spec.summary = 'IOS Shared module'
9
+ spec.vendored_frameworks = 'build/cocoapods/framework/kits.framework'
10
+ spec.libraries = 'c++'
11
+ spec.ios.deployment_target = '15.0'
12
+ spec.dependency 'lottie-ios', '4.4.3'
13
+ if !Dir.exist?('build/cocoapods/framework/kits.framework') || Dir.empty?('build/cocoapods/framework/kits.framework')
14
+ raise "
15
+ Kotlin framework 'kits' doesn't exist yet, so a proper Xcode project can't be generated.
16
+ 'pod install' should be executed after running ':generateDummyFramework' Gradle task:
17
+ ./gradlew :compose:generateDummyFramework
18
+ Alternatively, proper pod installation is performed during Gradle sync in the IDE (if Podfile location is set)"
19
+ end
20
+ spec.xcconfig = {
21
+ 'ENABLE_USER_SCRIPT_SANDBOXING' => 'NO',
22
+ }
23
+ spec.pod_target_xcconfig = {
24
+ 'KOTLIN_PROJECT_PATH' => ':compose',
25
+ 'PRODUCT_MODULE_NAME' => 'kits',
26
+ }
27
+ spec.script_phases = [
28
+ {
29
+ :name => 'Build compose',
30
+ :execution_position => :before_compile,
31
+ :shell_path => '/bin/sh',
32
+ :script => <<-SCRIPT
33
+ if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then
34
+ echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\""
35
+ exit 0
36
+ fi
37
+ set -ev
38
+ REPO_ROOT="$PODS_TARGET_SRCROOT"
39
+ "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \
40
+ -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \
41
+ -Pkotlin.native.cocoapods.archs="$ARCHS" \
42
+ -Pkotlin.native.cocoapods.configuration="$CONFIGURATION"
43
+ SCRIPT
44
+ }
45
+ ]
46
+ spec.resources = ['build/compose/cocoapods/compose-resources']
47
+ end
@@ -0,0 +1,6 @@
1
+ package vn.momo.kits.navigation
2
+
3
+ import androidx.compose.runtime.Composable
4
+
5
+ @Composable
6
+ internal actual fun RegisterScrollToTop(callback: (() -> Unit)?) = Unit
@@ -0,0 +1,123 @@
1
+ package vn.momo.kits.platform
2
+
3
+ import android.annotation.SuppressLint
4
+ import android.content.res.Resources
5
+ import android.graphics.BlurMaskFilter
6
+ import android.graphics.PorterDuff
7
+ import android.graphics.PorterDuffColorFilter
8
+ import android.os.Build
9
+ import androidx.compose.foundation.layout.Box
10
+ import androidx.compose.runtime.Composable
11
+ import androidx.compose.runtime.getValue
12
+ import androidx.compose.ui.Modifier
13
+ import androidx.compose.ui.graphics.Color
14
+ import androidx.compose.ui.graphics.NativePaint
15
+ import androidx.compose.ui.graphics.toArgb
16
+ import androidx.compose.ui.platform.LocalConfiguration
17
+ import androidx.compose.ui.semantics.contentDescription
18
+ import androidx.compose.ui.semantics.semantics
19
+ import androidx.compose.ui.unit.Dp
20
+ import androidx.compose.ui.unit.dp
21
+ import com.airbnb.lottie.LottieProperty
22
+ import com.airbnb.lottie.compose.LottieAnimation
23
+ import com.airbnb.lottie.compose.LottieCompositionSpec
24
+ import com.airbnb.lottie.compose.LottieConstants
25
+ import com.airbnb.lottie.compose.rememberLottieComposition
26
+ import com.airbnb.lottie.compose.rememberLottieDynamicProperties
27
+ import com.airbnb.lottie.compose.rememberLottieDynamicProperty
28
+ import vn.momo.kits.const.AppNavigationBar
29
+ import vn.momo.kits.const.AppStatusBar
30
+ import vn.momo.kits.utils.readJson
31
+ import androidx.activity.compose.BackHandler as AndroidBackHandler
32
+
33
+ actual fun getPlatformName(): String = "Android"
34
+
35
+ @Composable
36
+ actual fun getScreenDimensions(): ScreenDimension {
37
+ val config = LocalConfiguration.current
38
+ return ScreenDimension(
39
+ config.screenWidthDp, config.screenHeightDp
40
+ )
41
+ }
42
+
43
+ actual fun NativePaint.setMaskFilter(blurRadius: Float) {
44
+ this.maskFilter = BlurMaskFilter(blurRadius, BlurMaskFilter.Blur.NORMAL)
45
+ }
46
+
47
+ @SuppressLint("InternalInsetResource")
48
+ @Composable
49
+ actual fun getStatusBarHeight(): Dp {
50
+ val resourceId = Resources.getSystem().getIdentifier(
51
+ "status_bar_height",
52
+ "dimen",
53
+ "android"
54
+ )
55
+ return if(resourceId > 0) Resources.getSystem().getDimensionPixelSize(resourceId).dp else 0.dp
56
+ }
57
+
58
+ @Composable
59
+ actual fun BackHandler(enabled: Boolean, onBack: () -> Unit) {
60
+ AndroidBackHandler(enabled = enabled, onBack = onBack)
61
+ }
62
+
63
+ @Composable
64
+ actual fun ProvideNavigationEventDispatcherOwner(content: @Composable () -> Unit) {
65
+ content()
66
+ }
67
+
68
+ @Composable
69
+ actual fun getScreenHeight(): Dp {
70
+ return getScreenDimensions().height.dp + if (getOSVersion() >= 35) 0.dp else AppStatusBar.current + AppNavigationBar.current
71
+ }
72
+
73
+ actual fun getOSVersion(): OSVersion = OSVersion.Android(sdk = Build.VERSION.SDK_INT)
74
+
75
+ @Composable
76
+ actual fun LottieAnimation(
77
+ path: String,
78
+ tintColor: Color?,
79
+ bgColor: Color?,
80
+ placedAsOverlay: Boolean,
81
+ modifier: Modifier,
82
+ useCompose: Boolean
83
+ ) {
84
+ if (useCompose) {
85
+ ComposeLottieAnimation(path, tintColor, bgColor, modifier)
86
+ return
87
+ }
88
+
89
+ val json = readJson(path)
90
+
91
+ if (json.isEmpty()) {
92
+ Box(modifier)
93
+ return
94
+ }
95
+
96
+ val composition by rememberLottieComposition(
97
+ LottieCompositionSpec.JsonString(json)
98
+ )
99
+
100
+ val colorFilter = PorterDuffColorFilter(
101
+ tintColor?.toArgb() ?: Color.White.toArgb(),
102
+ PorterDuff.Mode.SRC_ATOP
103
+ )
104
+
105
+ val dynamicProperties = rememberLottieDynamicProperties(
106
+ rememberLottieDynamicProperty(
107
+ property = LottieProperty.COLOR_FILTER,
108
+ value = colorFilter,
109
+ keyPath = arrayOf("**")
110
+ )
111
+ )
112
+
113
+ LottieAnimation(
114
+ composition = composition,
115
+ iterations = LottieConstants.IterateForever,
116
+ dynamicProperties = if (tintColor != null) dynamicProperties else null,
117
+ modifier = modifier
118
+ )
119
+ }
120
+
121
+ actual fun NativePaint.setColor(color: Color){
122
+ this.color = color.toArgb()
123
+ }
@@ -0,0 +1,52 @@
1
+ package vn.momo.kits.application
2
+
3
+ import androidx.compose.foundation.background
4
+ import androidx.compose.foundation.layout.*
5
+ import androidx.compose.foundation.shape.RoundedCornerShape
6
+ import androidx.compose.runtime.Composable
7
+ import androidx.compose.ui.Modifier
8
+ import androidx.compose.ui.graphics.Color
9
+ import androidx.compose.ui.unit.dp
10
+ import androidx.compose.ui.zIndex
11
+ import vn.momo.kits.components.InputSearch
12
+ import vn.momo.kits.components.InputSearchProps
13
+ import vn.momo.kits.const.Radius
14
+ import vn.momo.kits.const.Spacing
15
+
16
+ @Composable
17
+ internal fun AnimationSearchInput(
18
+ animations: HeaderAnimations,
19
+ inputSearchProps: InputSearchProps
20
+ ) {
21
+ Box(
22
+ modifier = Modifier
23
+ .fillMaxWidth()
24
+ .offset(
25
+ x = animations.translateX.dp,
26
+ y = animations.translateY.dp
27
+ )
28
+ ) {
29
+ Box(
30
+ modifier = Modifier
31
+ .height(HEADER_HEIGHT.dp)
32
+ .padding(vertical = Spacing.S)
33
+ .zIndex(1f)
34
+ ) {
35
+ Box(
36
+ modifier = Modifier
37
+ .width(animations.width.dp)
38
+ .background(
39
+ color = animations.backgroundSearch,
40
+ shape = RoundedCornerShape(Radius.XL)
41
+ )
42
+ ) {
43
+ InputSearch(
44
+ inputSearchProps = inputSearchProps.copy(
45
+ showButtonText = false,
46
+ backgroundColor = Color.Transparent
47
+ )
48
+ )
49
+ }
50
+ }
51
+ }
52
+ }