@momo-kits/native-kits 0.157.5 → 0.158.1-beta.1-debug

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/.claude/settings.local.json +11 -0
  2. package/.claude/skills/design-system/SKILL.md +88 -0
  3. package/.claude/skills/design-system/references/components/avatar.md +134 -0
  4. package/.claude/skills/design-system/references/components/badge.md +127 -0
  5. package/.claude/skills/design-system/references/components/bottom-tab.md +177 -0
  6. package/.claude/skills/design-system/references/components/bottomsheet.md +170 -0
  7. package/.claude/skills/design-system/references/components/button.md +206 -0
  8. package/.claude/skills/design-system/references/components/carousel.md +117 -0
  9. package/.claude/skills/design-system/references/components/checkbox.md +98 -0
  10. package/.claude/skills/design-system/references/components/chip.md +146 -0
  11. package/.claude/skills/design-system/references/components/collapse.md +120 -0
  12. package/.claude/skills/design-system/references/components/date-picker.md +119 -0
  13. package/.claude/skills/design-system/references/components/divider.md +84 -0
  14. package/.claude/skills/design-system/references/components/icon.md +130 -0
  15. package/.claude/skills/design-system/references/components/image.md +81 -0
  16. package/.claude/skills/design-system/references/components/information.md +107 -0
  17. package/.claude/skills/design-system/references/components/input-dropdown.md +138 -0
  18. package/.claude/skills/design-system/references/components/input-money.md +157 -0
  19. package/.claude/skills/design-system/references/components/input-otp.md +132 -0
  20. package/.claude/skills/design-system/references/components/input-phone-number.md +140 -0
  21. package/.claude/skills/design-system/references/components/input-search.md +124 -0
  22. package/.claude/skills/design-system/references/components/input-text-area.md +133 -0
  23. package/.claude/skills/design-system/references/components/input.md +152 -0
  24. package/.claude/skills/design-system/references/components/loader.md +87 -0
  25. package/.claude/skills/design-system/references/components/pagination.md +105 -0
  26. package/.claude/skills/design-system/references/components/popup-notify.md +128 -0
  27. package/.claude/skills/design-system/references/components/progress-info.md +114 -0
  28. package/.claude/skills/design-system/references/components/radio.md +86 -0
  29. package/.claude/skills/design-system/references/components/rating.md +126 -0
  30. package/.claude/skills/design-system/references/components/skeleton.md +120 -0
  31. package/.claude/skills/design-system/references/components/slider.md +141 -0
  32. package/.claude/skills/design-system/references/components/snackbar.md +97 -0
  33. package/.claude/skills/design-system/references/components/stepper.md +100 -0
  34. package/.claude/skills/design-system/references/components/steps.md +91 -0
  35. package/.claude/skills/design-system/references/components/suggest-action.md +95 -0
  36. package/.claude/skills/design-system/references/components/swipe.md +121 -0
  37. package/.claude/skills/design-system/references/components/switch.md +98 -0
  38. package/.claude/skills/design-system/references/components/tab-view.md +120 -0
  39. package/.claude/skills/design-system/references/components/tag.md +118 -0
  40. package/.claude/skills/design-system/references/components/text.md +151 -0
  41. package/.claude/skills/design-system/references/components/toast.md +99 -0
  42. package/.claude/skills/design-system/references/components/tooltip.md +138 -0
  43. package/.claude/skills/design-system/references/components/top-nav-miniapp.md +94 -0
  44. package/.claude/skills/design-system/references/components/top-nav.md +226 -0
  45. package/.claude/skills/design-system/references/components/uploader.md +115 -0
  46. package/.claude/skills/design-system/references/navigation/bottom-tab.md +131 -0
  47. package/.claude/skills/design-system/references/navigation/bottomsheet.md +161 -0
  48. package/.claude/skills/design-system/references/navigation/modal.md +133 -0
  49. package/.claude/skills/design-system/references/navigation/navigation-options.md +225 -0
  50. package/.claude/skills/design-system/references/navigation/navigator.md +111 -0
  51. package/.claude/skills/design-system/references/navigation/setup.md +134 -0
  52. package/.claude/skills/design-system/references/navigation/stack.md +128 -0
  53. package/.claude/skills/design-system/references/spec-convention.md +80 -0
  54. package/.claude/skills/design-system/references/tokens/colors.md +131 -0
  55. package/.claude/skills/design-system/references/tokens/spacing-radius.md +144 -0
  56. package/.claude/skills/design-system/references/tokens/theme.md +125 -0
  57. package/.claude/skills/design-system/references/tokens/typography.md +135 -0
  58. package/.claude/skills/design-system-kits/SKILL.md +102 -0
  59. package/.claude/skills/design-system-kits/references/code-convention.md +118 -0
  60. package/.claude/skills/design-system-kits/references/components/avatar.md +45 -0
  61. package/.claude/skills/design-system-kits/references/components/badge.md +27 -0
  62. package/.claude/skills/design-system-kits/references/components/button.md +65 -0
  63. package/.claude/skills/design-system-kits/references/components/carousel.md +51 -0
  64. package/.claude/skills/design-system-kits/references/components/checkbox.md +39 -0
  65. package/.claude/skills/design-system-kits/references/components/chip.md +54 -0
  66. package/.claude/skills/design-system-kits/references/components/collapse.md +63 -0
  67. package/.claude/skills/design-system-kits/references/components/date-picker.md +36 -0
  68. package/.claude/skills/design-system-kits/references/components/divider.md +21 -0
  69. package/.claude/skills/design-system-kits/references/components/icon.md +382 -0
  70. package/.claude/skills/design-system-kits/references/components/image.md +62 -0
  71. package/.claude/skills/design-system-kits/references/components/information.md +61 -0
  72. package/.claude/skills/design-system-kits/references/components/input-dropdown.md +92 -0
  73. package/.claude/skills/design-system-kits/references/components/input-money.md +128 -0
  74. package/.claude/skills/design-system-kits/references/components/input-otp.md +85 -0
  75. package/.claude/skills/design-system-kits/references/components/input-phone-number.md +96 -0
  76. package/.claude/skills/design-system-kits/references/components/input-search.md +127 -0
  77. package/.claude/skills/design-system-kits/references/components/input-text-area.md +100 -0
  78. package/.claude/skills/design-system-kits/references/components/input.md +126 -0
  79. package/.claude/skills/design-system-kits/references/components/loader.md +41 -0
  80. package/.claude/skills/design-system-kits/references/components/pagination.md +47 -0
  81. package/.claude/skills/design-system-kits/references/components/popup-notify.md +69 -0
  82. package/.claude/skills/design-system-kits/references/components/popup-promotion.md +35 -0
  83. package/.claude/skills/design-system-kits/references/components/progress-info.md +55 -0
  84. package/.claude/skills/design-system-kits/references/components/radio.md +42 -0
  85. package/.claude/skills/design-system-kits/references/components/rating.md +36 -0
  86. package/.claude/skills/design-system-kits/references/components/skeleton.md +25 -0
  87. package/.claude/skills/design-system-kits/references/components/slider.md +53 -0
  88. package/.claude/skills/design-system-kits/references/components/snackbar.md +52 -0
  89. package/.claude/skills/design-system-kits/references/components/stepper.md +46 -0
  90. package/.claude/skills/design-system-kits/references/components/steps.md +57 -0
  91. package/.claude/skills/design-system-kits/references/components/suggest-action.md +44 -0
  92. package/.claude/skills/design-system-kits/references/components/swipe.md +44 -0
  93. package/.claude/skills/design-system-kits/references/components/switch.md +43 -0
  94. package/.claude/skills/design-system-kits/references/components/tab-view.md +56 -0
  95. package/.claude/skills/design-system-kits/references/components/tag.md +50 -0
  96. package/.claude/skills/design-system-kits/references/components/text.md +56 -0
  97. package/.claude/skills/design-system-kits/references/components/toast.md +51 -0
  98. package/.claude/skills/design-system-kits/references/components/tooltip.md +95 -0
  99. package/.claude/skills/design-system-kits/references/components/uploader.md +48 -0
  100. package/.claude/skills/design-system-kits/references/design-spec-structure.md +356 -0
  101. package/.claude/skills/design-system-kits/references/design-spec-to-code.md +596 -0
  102. package/.claude/skills/design-system-kits/references/navigation/bottom-tab.md +155 -0
  103. package/.claude/skills/design-system-kits/references/navigation/bottomsheet.md +94 -0
  104. package/.claude/skills/design-system-kits/references/navigation/modal.md +125 -0
  105. package/.claude/skills/design-system-kits/references/navigation/navigation-options.md +430 -0
  106. package/.claude/skills/design-system-kits/references/navigation/navigator.md +177 -0
  107. package/.claude/skills/design-system-kits/references/navigation/setup.md +94 -0
  108. package/.claude/skills/design-system-kits/references/navigation/stack.md +152 -0
  109. package/.claude/skills/design-system-kits/references/screen-layout-rule.md +125 -0
  110. package/.claude/skills/design-system-kits/references/tokens/colors.md +183 -0
  111. package/.claude/skills/design-system-kits/references/tokens/spacing-radius.md +45 -0
  112. package/.claude/skills/design-system-kits/references/tokens/theme.md +97 -0
  113. package/.claude/skills/design-system-kits/references/tokens/typography.md +105 -0
  114. package/.claude/skills/vibe-design/SKILL.md +306 -0
  115. package/build.gradle.kts +11 -0
  116. package/compose/build.gradle.kts +180 -0
  117. package/compose/build.gradle.kts.backup +180 -0
  118. package/compose/compose.podspec +54 -0
  119. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +117 -0
  120. package/compose/src/commonMain/composeResources/font/momosignature.otf +0 -0
  121. package/compose/src/commonMain/composeResources/font/momotrustdisplay.otf +0 -0
  122. package/compose/src/commonMain/composeResources/font/sfprotext_black.otf +0 -0
  123. package/compose/src/commonMain/composeResources/font/sfprotext_black.ttf +0 -0
  124. package/compose/src/commonMain/composeResources/font/sfprotext_bold.ttf +0 -0
  125. package/compose/src/commonMain/composeResources/font/sfprotext_heavy.ttf +0 -0
  126. package/compose/src/commonMain/composeResources/font/sfprotext_light.ttf +0 -0
  127. package/compose/src/commonMain/composeResources/font/sfprotext_medium.ttf +0 -0
  128. package/compose/src/commonMain/composeResources/font/sfprotext_regular.ttf +0 -0
  129. package/compose/src/commonMain/composeResources/font/sfprotext_semibold.ttf +0 -0
  130. package/compose/src/commonMain/composeResources/font/sfprotext_thin.otf +0 -0
  131. package/compose/src/commonMain/composeResources/font/sfprotext_thin.ttf +0 -0
  132. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.otf +0 -0
  133. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.ttf +0 -0
  134. package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +57 -0
  135. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +107 -0
  136. package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +201 -0
  137. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +222 -0
  138. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +48 -0
  139. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +86 -0
  140. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +76 -0
  141. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +76 -0
  142. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +305 -0
  143. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +33 -0
  144. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +720 -0
  145. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +121 -0
  146. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +405 -0
  147. package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +69 -0
  148. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Avatar.kt +157 -0
  149. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +85 -0
  150. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +32 -0
  151. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +340 -0
  152. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BaselineView.kt +198 -0
  153. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +357 -0
  154. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Carousel.kt +123 -0
  155. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +94 -0
  156. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +136 -0
  157. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Collapse.kt +224 -0
  158. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +543 -0
  159. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +23 -0
  160. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +76 -0
  161. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +148 -0
  162. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +188 -0
  163. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +116 -0
  164. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +448 -0
  165. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +172 -0
  166. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +255 -0
  167. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +231 -0
  168. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +233 -0
  169. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +254 -0
  170. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +241 -0
  171. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +364 -0
  172. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Loader.kt +108 -0
  173. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +56 -0
  174. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +41 -0
  175. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +92 -0
  176. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +40 -0
  177. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +352 -0
  178. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +103 -0
  179. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ProgressInfo.kt +338 -0
  180. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +70 -0
  181. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Rating.kt +87 -0
  182. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +17 -0
  183. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +96 -0
  184. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Slider.kt +348 -0
  185. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +256 -0
  186. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Steps.kt +494 -0
  187. package/compose/src/commonMain/kotlin/vn/momo/kits/components/SuggestAction.kt +131 -0
  188. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Swipe.kt +215 -0
  189. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +96 -0
  190. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +531 -0
  191. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +92 -0
  192. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +130 -0
  193. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +214 -0
  194. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +590 -0
  195. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +177 -0
  196. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Uploader.kt +192 -0
  197. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +205 -0
  198. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +29 -0
  199. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +239 -0
  200. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +191 -0
  201. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +306 -0
  202. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +12 -0
  203. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +16 -0
  204. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +188 -0
  205. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +285 -0
  206. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +2 -0
  207. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +35 -0
  208. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +2 -0
  209. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +50 -0
  210. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +68 -0
  211. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +11 -0
  212. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +14 -0
  213. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +50 -0
  214. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +51 -0
  215. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +239 -0
  216. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +119 -0
  217. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +98 -0
  218. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +161 -0
  219. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +331 -0
  220. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +497 -0
  221. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +162 -0
  222. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +243 -0
  223. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +86 -0
  224. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +187 -0
  225. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +279 -0
  226. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +80 -0
  227. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +306 -0
  228. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +32 -0
  229. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +370 -0
  230. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +132 -0
  231. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +46 -0
  232. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +1329 -0
  233. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +62 -0
  234. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Tracking.kt +15 -0
  235. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +88 -0
  236. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +161 -0
  237. package/gradle/libs.versions.toml +57 -0
  238. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  239. package/gradle/wrapper/gradle-wrapper.properties +8 -0
  240. package/gradle.properties +26 -0
  241. package/gradlew +252 -0
  242. package/gradlew.bat +94 -0
  243. package/ios/Popup/PopupPromotion.swift +2 -2
  244. package/local.properties +8 -0
  245. package/package.json +1 -1
  246. package/settings.gradle.kts +52 -0
@@ -0,0 +1,27 @@
1
+ # Badge
2
+
3
+ ## React Native
4
+
5
+ ```tsx
6
+ import { Badge, BadgeDot, BadgeDotAnimation, BadgeRibbon } from '@momo-kits/foundation';
7
+
8
+ <Badge label="99+" backgroundColor={Colors.red_03} />
9
+ <BadgeDot size="small" /> // 'small' | 'large'
10
+ <BadgeDotAnimation size="small" /> // 'small' | 'large'
11
+ <BadgeRibbon label="NEW" />
12
+ ```
13
+
14
+ ## Compose
15
+
16
+ ```kotlin
17
+ import vn.momo.kits.components.Badge
18
+ import vn.momo.kits.components.BadgeDot
19
+ import vn.momo.kits.components.BadgeRibbon
20
+ import vn.momo.kits.components.DotSize
21
+
22
+ Badge(label = "99+", backgroundColor = Colors.red_03)
23
+ BadgeDot(size = DotSize.Small) // Small(10dp), Large(16dp)
24
+ BadgeRibbon(label = "NEW")
25
+ ```
26
+
27
+ > **Note:** `BadgeDotAnimation` is RN-only (animated dot). Compose has no equivalent.
@@ -0,0 +1,65 @@
1
+ # Button Reference
2
+
3
+ ## React Native
4
+
5
+ ```tsx
6
+ import { Button } from '@momo-kits/foundation';
7
+
8
+ <Button
9
+ title="Click me" // button label
10
+ type="primary" // 'primary'|'secondary'|'tonal'|'outline'|'danger'|'text'|'disabled'
11
+ size="large" // 'large'|'medium'|'small'
12
+ full // full-width button (default: true)
13
+ iconLeft={iconSource} // left icon
14
+ iconRight={iconSource} // right icon
15
+ loading={false} // show spinner
16
+ disabled={false} // disable interaction
17
+ onPress={() => {}} // press handler
18
+ tintColor={Colors.pink_03} // custom tint
19
+ gradientConfig={{ // custom gradient
20
+ colors: ['#ff0', '#f00'],
21
+ start: { x: 0, y: 0 },
22
+ end: { x: 1, y: 0 },
23
+ }}
24
+ accessibilityLabel="submit" // QA automation ID
25
+ accessibilityState={{ disabled: true }}
26
+ params={{ action: 'submit' }} // tracking params
27
+ />
28
+ ```
29
+
30
+ ---
31
+
32
+ ## Compose
33
+
34
+ ```kotlin
35
+ import vn.momo.kits.components.Button
36
+ import vn.momo.kits.components.ButtonType
37
+ import vn.momo.kits.components.Size
38
+
39
+ Button(
40
+ onClick = { /* action */ },
41
+ type = ButtonType.PRIMARY, // PRIMARY, SECONDARY, TONAL, OUTLINE, DANGER, TEXT, DISABLED
42
+ size = Size.LARGE, // LARGE (48dp), MEDIUM (36dp), SMALL (28dp)
43
+ title = "Button",
44
+ iconLeft = "", // icon source string
45
+ iconRight = "",
46
+ loading = false, // show spinner
47
+ useTintColor = false, // tint icons to match text color (default: false)
48
+ isFull = true, // full-width (default: true)
49
+ modifier = Modifier,
50
+ )
51
+ ```
52
+
53
+ Button sizes map to typography: LARGE → `actionDefaultBold`, MEDIUM → `actionSBold`, SMALL → `actionXsBold`.
54
+
55
+ ---
56
+
57
+ ## Side-by-Side Example
58
+
59
+ | Feature | React Native | Compose |
60
+ |---------|-------------|---------|
61
+ | Type prop | `type="primary"` (string) | `type = ButtonType.PRIMARY` (enum) |
62
+ | Size prop | `size="large"` (string) | `size = Size.LARGE` (enum) |
63
+ | Full width | `full` (boolean shorthand) | `isFull = true` |
64
+ | Press handler | `onPress={fn}` | `onClick = { fn() }` |
65
+ | Icon | `iconLeft={source}` (ImageSource) | `iconLeft = "icon_name"` (String) |
@@ -0,0 +1,51 @@
1
+ # Carousel
2
+
3
+ ## React Native
4
+
5
+ ```tsx
6
+ import { Carousel } from '@momo-kits/carousel';
7
+
8
+ <Carousel
9
+ data={items}
10
+ renderItem={({ item, index }) => <Card>...</Card>}
11
+ autoplay={false}
12
+ autoplayInterval={3000}
13
+ loop={false}
14
+ enableSnap={true}
15
+ scrollEnabled={true}
16
+ inactiveSlideOpacity={1}
17
+ inactiveSlideScale={1}
18
+ onSnapToItem={(index) => {}}
19
+ onScrollIndexChanged={(index) => {}}
20
+ />
21
+ ```
22
+
23
+ ## Compose
24
+
25
+ ```kotlin
26
+ import vn.momo.kits.components.Carousel
27
+
28
+ Carousel(
29
+ itemCount = items.size,
30
+ modifier = Modifier,
31
+ loop = false, // infinite loop; default: false
32
+ autoplay = false, // auto-advance slides; default: false
33
+ autoplayInterval = 3000L, // ms between slides
34
+ enableSnap = true, // default: true
35
+ scrollEnabled = true, // default: true
36
+ inactiveSlideOpacity = 1f, // default: 1f
37
+ inactiveSlideScale = 1f, // default: 1f
38
+ onSnapToItem = { index -> },
39
+ onScrollIndexChanged = { index -> },
40
+ ) { index ->
41
+ Card(items[index])
42
+ }
43
+ ```
44
+
45
+ ## Key Differences
46
+
47
+ | Feature | React Native | Compose |
48
+ |---------|-------------|---------|
49
+ | Data source | `data` + `renderItem` | `itemCount` + `content` slot |
50
+ | Loop | `loop` | `loop` (virtual page ×1000) |
51
+ | Pagination | `Pagination` prop | Manual via `onScrollIndexChanged` |
@@ -0,0 +1,39 @@
1
+ # CheckBox
2
+
3
+ ## React Native
4
+
5
+ ```tsx
6
+ import { CheckBox } from '@momo-kits/foundation';
7
+
8
+ <CheckBox
9
+ value={checked}
10
+ onChange={setChecked}
11
+ label="Accept terms"
12
+ disabled={false}
13
+ indeterminate={false} // partial selection state
14
+ accessibilityState={{ checked: true, disabled: false }}
15
+ params={{ field: 'terms' }} // tracking
16
+ />
17
+ ```
18
+
19
+ ## Compose
20
+
21
+ ```kotlin
22
+ import vn.momo.kits.components.CheckBox
23
+
24
+ CheckBox(
25
+ checked = isChecked,
26
+ onCheckedChange = { isChecked = it },
27
+ title = "Accept terms", // optional label
28
+ disabled = false,
29
+ indeterminate = false, // partial state (minus icon)
30
+ )
31
+ ```
32
+
33
+ ## Key Differences
34
+
35
+ | Feature | React Native | Compose |
36
+ |---------|-------------|---------|
37
+ | Value prop | `value` | `checked` |
38
+ | Change handler | `onChange` | `onCheckedChange` |
39
+ | Label prop | `label` | `title` |
@@ -0,0 +1,54 @@
1
+ # Chip
2
+
3
+ ## React Native
4
+
5
+ ```tsx
6
+ import { Chip } from '@momo-kits/chip';
7
+
8
+ <Chip
9
+ label="Filter"
10
+ selected={isSelected}
11
+ onPress={toggle}
12
+ size="large" // 'small'|'large'
13
+ iconLeft="icon_name" // left icon name
14
+ iconRight={null} // right icon name (optional)
15
+ iconLeftColor={Colors.pink_03} // left icon tint color
16
+ iconRightColor={Colors.black_12}
17
+ backgroundColor={Colors.black_03}
18
+ accessibilityLabel="filter_chip"
19
+ accessibilityState={{ selected: isSelected }}
20
+ />
21
+ ```
22
+
23
+ Note: Chip is a separate package `@momo-kits/chip` in RN.
24
+
25
+ ## Compose
26
+
27
+ ```kotlin
28
+ import vn.momo.kits.components.Chip
29
+ import vn.momo.kits.components.ChipSize
30
+
31
+ Chip(
32
+ label = "Filter",
33
+ selected = isSelected,
34
+ onClick = { toggle() },
35
+ size = ChipSize.LARGE, // SMALL (24dp height), LARGE (32dp height)
36
+ iconLeft = "icon_name", // left icon name (null = hidden)
37
+ iconRight = null, // right icon name (null = hidden)
38
+ iconLeftTint = Colors.pink_03, // left icon tint color
39
+ iconRightTint = Colors.black_12,
40
+ backgroundColor = null, // custom bg when not selected (null = default)
41
+ accessibilityLabel = "filter_chip",
42
+ )
43
+ ```
44
+
45
+ > **Note:** RN uses `iconLeft`/`iconRight` and `iconLeftColor`/`iconRightColor`. Compose uses `iconLeft`/`iconRight` and `iconLeftTint`/`iconRightTint`.
46
+
47
+ Chip is built-in (`vn.momo.kits.components`) in Compose.
48
+
49
+ ### ChipSize (Compose)
50
+
51
+ | Value | Height |
52
+ |-------|--------|
53
+ | `SMALL` | 24dp |
54
+ | `LARGE` | 32dp |
@@ -0,0 +1,63 @@
1
+ # Collapse
2
+
3
+ ## React Native
4
+
5
+ ```tsx
6
+ import { Collapse } from '@momo-kits/collapse';
7
+
8
+ <Collapse
9
+ title="More details"
10
+ expandDefault={false}
11
+ onPress={(isExpanded) => {}}
12
+ description="Optional subtitle"
13
+ image="https://..."
14
+ imageSize={24}
15
+ subTitle="Right label"
16
+ tagProps={{ label: 'Tag', type: 'info' }}
17
+ titleSize="medium" // 'small'|'medium'|'large'
18
+ showBorder={false}
19
+ useBackgroundCollapseButton={false}
20
+ backgroundColor="#FFFFFF"
21
+ titleColor="#000000"
22
+ >
23
+ <Text>Hidden content</Text>
24
+ </Collapse>
25
+ ```
26
+
27
+ ## Compose
28
+
29
+ ```kotlin
30
+ import vn.momo.kits.components.Collapse
31
+ import vn.momo.kits.components.CollapseTitleSize
32
+ import vn.momo.kits.components.TagColor
33
+
34
+ Collapse(
35
+ title = "More details",
36
+ modifier = Modifier,
37
+ description = "Optional subtitle",
38
+ image = "https://...",
39
+ imageSize = 24,
40
+ subTitle = "Right label",
41
+ tagLabel = "Tag",
42
+ tagColor = TagColor.Default,
43
+ showBorder = false,
44
+ expandDefault = false,
45
+ titleSize = CollapseTitleSize.Medium, // Small | Medium | Large
46
+ useBackgroundCollapseButton = false,
47
+ backgroundColor = null,
48
+ titleColor = null,
49
+ onPress = { isExpanded -> },
50
+ accessibilityId = "Collapse/section",
51
+ ) {
52
+ Text("Hidden content")
53
+ }
54
+ ```
55
+
56
+ ## Key Differences
57
+
58
+ | Feature | React Native | Compose |
59
+ |---------|-------------|---------|
60
+ | Expand state | Via `ref` | Internal state (no ref) |
61
+ | Content | Children | `content` slot |
62
+ | Title size | `string` | `CollapseTitleSize` enum |
63
+ | Programmatic control | `ref?.setExpanded()` | Not available |
@@ -0,0 +1,36 @@
1
+ # DateTimePicker / Calendar
2
+
3
+ ## React Native
4
+
5
+ ```tsx
6
+ import { DateTimePicker } from '@momo-kits/date-picker';
7
+
8
+ <DateTimePicker
9
+ format="DD-MM-YYYY" // DD-MM-YYYY, HH:mm, DD-MM-YYYY HH:mm
10
+ minuteInterval={1} // minute interval (1, 5, 10, 15, 30, etc.)
11
+ onChange={(date: Date) => {}} // called when date/time changes
12
+ selectedValue={new Date()} // initially selected date/time
13
+ minDate={new Date()} // minimum selectable date
14
+ maxDate={new Date()} // maximum selectable date
15
+ arrayLabelTime={[]} // optional labels for time columns, e.g. ["Ngày", "Tháng", "Năm"]
16
+ style={{}} // optional custom styles
17
+ />
18
+ ```
19
+
20
+ ## Compose
21
+
22
+ ```kotlin
23
+ import vn.momo.kits.components.datetimepicker.DateTimePicker
24
+ import kotlinx.datetime.LocalDateTime
25
+
26
+ DateTimePicker(
27
+ modifier = Modifier, // optional modifier
28
+ format = "DD-MM-YYYY", // DD-MM-YYYY, HH:mm, DD-MM-YYYY HH:mm
29
+ onChange = { date: LocalDateTime -> }, // called when date/time changes
30
+ selectedValue = null, // initially selected date/time (LocalDateTime), defaults to now
31
+ minDate = null, // minimum selectable date (LocalDateTime), defaults to -10 years
32
+ maxDate = null, // maximum selectable date (LocalDateTime), defaults to +10 years
33
+ minuteInterval = 1, // minute interval (1, 5, 10, 15, 30, etc.)
34
+ arrayLabelTime = emptyList(), // optional labels for time columns, e.g. listOf("Ngày", "Tháng", "Năm")
35
+ )
36
+ ```
@@ -0,0 +1,21 @@
1
+ # Divider
2
+
3
+ ## React Native
4
+
5
+ ```tsx
6
+ import { Divider } from '@momo-kits/foundation';
7
+
8
+ <Divider /> // default: solid, with vertical margin
9
+ <Divider useMargin={false} /> // no vertical margin
10
+ <Divider type="dash" /> // dashed line (uses DashDivider internally)
11
+ <Divider type="default" /> // solid line; default
12
+ <Divider style={{ marginVertical: 8 }} /> // custom style
13
+ ```
14
+
15
+ ## Compose
16
+
17
+ ```kotlin
18
+ import vn.momo.kits.components.Divider
19
+
20
+ Divider()
21
+ ```