@momo-kits/native-kits 0.157.1-skill.3 → 0.157.1-skill.6-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 (222) hide show
  1. package/.claude/skills/momo-native-kits-skills/README.md +52 -0
  2. package/.claude/skills/momo-native-kits-skills/SKILL.md +32 -0
  3. package/.claude/skills/momo-native-kits-skills/data-display/SKILL.md +42 -0
  4. package/.claude/skills/momo-native-kits-skills/feedback/SKILL.md +43 -0
  5. package/.claude/{momo-native-kits-skill → skills/momo-native-kits-skills/feedback}/references/popup.md +3 -10
  6. package/.claude/skills/momo-native-kits-skills/form-controls/SKILL.md +42 -0
  7. package/.claude/{momo-native-kits-skill → skills/momo-native-kits-skills/form-controls}/references/button.md +2 -3
  8. package/.claude/{momo-native-kits-skill → skills/momo-native-kits-skills/form-controls}/references/input.md +3 -7
  9. package/.claude/{momo-native-kits-skill → skills/momo-native-kits-skills/form-controls}/references/radio.md +9 -9
  10. package/.claude/skills/momo-native-kits-skills/layout/SKILL.md +39 -0
  11. package/.claude/skills/momo-native-kits-skills/navigation/SKILL.md +38 -0
  12. package/.claude/skills/momo-native-kits-skills/output/test-report.json +12 -0
  13. package/.claude/skills/momo-native-kits-skills/output/validation-result.json +108 -0
  14. package/.claude/{momo-native-kits-skill → skills/momo-native-kits-skills}/references/constants.md +81 -6
  15. package/.claude/skills/momo-native-kits-skills/references/design-guidelines.md +130 -0
  16. package/.claude/skills/momo-native-kits-skills/references/developer/android-compose.md +29 -0
  17. package/.claude/skills/momo-native-kits-skills/references/developer/code-convention.md +118 -0
  18. package/.claude/skills/momo-native-kits-skills/references/developer/compose-multiplatform.md +29 -0
  19. package/.claude/skills/momo-native-kits-skills/scripts/logger.js +63 -0
  20. package/.claude/skills/momo-native-kits-skills/scripts/rules/badge.js +32 -0
  21. package/.claude/skills/momo-native-kits-skills/scripts/rules/bottomtab.js +19 -0
  22. package/.claude/skills/momo-native-kits-skills/scripts/rules/button.js +32 -0
  23. package/.claude/skills/momo-native-kits-skills/scripts/rules/card.js +32 -0
  24. package/.claude/skills/momo-native-kits-skills/scripts/rules/checkbox.js +32 -0
  25. package/.claude/skills/momo-native-kits-skills/scripts/rules/chip.js +59 -0
  26. package/.claude/skills/momo-native-kits-skills/scripts/rules/divider.js +19 -0
  27. package/.claude/skills/momo-native-kits-skills/scripts/rules/global.js +61 -0
  28. package/.claude/skills/momo-native-kits-skills/scripts/rules/index.js +54 -0
  29. package/.claude/skills/momo-native-kits-skills/scripts/rules/input.js +32 -0
  30. package/.claude/skills/momo-native-kits-skills/scripts/rules/navigation.js +48 -0
  31. package/.claude/skills/momo-native-kits-skills/scripts/rules/popup.js +45 -0
  32. package/.claude/skills/momo-native-kits-skills/scripts/rules/radio.js +105 -0
  33. package/.claude/skills/momo-native-kits-skills/scripts/rules/skeleton.js +20 -0
  34. package/.claude/skills/momo-native-kits-skills/scripts/rules/snackbar.js +32 -0
  35. package/.claude/skills/momo-native-kits-skills/scripts/rules/state.js +21 -0
  36. package/.claude/skills/momo-native-kits-skills/scripts/rules/switch.js +45 -0
  37. package/.claude/skills/momo-native-kits-skills/scripts/rules/text.js +19 -0
  38. package/.claude/skills/momo-native-kits-skills/scripts/rules/tooltip.js +45 -0
  39. package/.claude/skills/momo-native-kits-skills/scripts/rules/trustbanner.js +22 -0
  40. package/.claude/skills/momo-native-kits-skills/scripts/test-on-device.sh +117 -0
  41. package/.claude/skills/momo-native-kits-skills/scripts/test-runner.js +167 -0
  42. package/.claude/skills/momo-native-kits-skills/scripts/validate-kits.js +131 -0
  43. package/.momo-agent.json +13 -0
  44. package/build.gradle.kts +11 -0
  45. package/compose/build.gradle.kts +180 -0
  46. package/compose/build.gradle.kts.backup +180 -0
  47. package/compose/compose.podspec +54 -0
  48. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +110 -0
  49. package/compose/src/commonMain/composeResources/font/momosignature.otf +0 -0
  50. package/compose/src/commonMain/composeResources/font/momotrustdisplay.otf +0 -0
  51. package/compose/src/commonMain/composeResources/font/sfprotext_black.otf +0 -0
  52. package/compose/src/commonMain/composeResources/font/sfprotext_black.ttf +0 -0
  53. package/compose/src/commonMain/composeResources/font/sfprotext_bold.ttf +0 -0
  54. package/compose/src/commonMain/composeResources/font/sfprotext_heavy.ttf +0 -0
  55. package/compose/src/commonMain/composeResources/font/sfprotext_light.ttf +0 -0
  56. package/compose/src/commonMain/composeResources/font/sfprotext_medium.ttf +0 -0
  57. package/compose/src/commonMain/composeResources/font/sfprotext_regular.ttf +0 -0
  58. package/compose/src/commonMain/composeResources/font/sfprotext_semibold.ttf +0 -0
  59. package/compose/src/commonMain/composeResources/font/sfprotext_thin.otf +0 -0
  60. package/compose/src/commonMain/composeResources/font/sfprotext_thin.ttf +0 -0
  61. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.otf +0 -0
  62. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.ttf +0 -0
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +57 -0
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +107 -0
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +201 -0
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +222 -0
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +48 -0
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +86 -0
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +76 -0
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +76 -0
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +305 -0
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +33 -0
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +720 -0
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +121 -0
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +405 -0
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +69 -0
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +85 -0
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +32 -0
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +340 -0
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BaselineView.kt +198 -0
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +357 -0
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +94 -0
  83. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +136 -0
  84. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +543 -0
  85. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +23 -0
  86. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +76 -0
  87. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +148 -0
  88. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +188 -0
  89. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +116 -0
  90. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +448 -0
  91. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +172 -0
  92. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +255 -0
  93. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +231 -0
  94. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +233 -0
  95. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +254 -0
  96. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +241 -0
  97. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +364 -0
  98. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +56 -0
  99. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +41 -0
  100. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +92 -0
  101. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +40 -0
  102. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +352 -0
  103. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +103 -0
  104. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +70 -0
  105. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +17 -0
  106. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +96 -0
  107. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +96 -0
  108. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +92 -0
  109. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +130 -0
  110. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +214 -0
  111. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +590 -0
  112. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +177 -0
  113. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +205 -0
  114. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +29 -0
  115. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +239 -0
  116. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +191 -0
  117. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +306 -0
  118. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +12 -0
  119. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +13 -0
  120. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +185 -0
  121. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +285 -0
  122. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +2 -0
  123. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +35 -0
  124. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +2 -0
  125. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +59 -0
  126. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +68 -0
  127. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +11 -0
  128. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +14 -0
  129. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +50 -0
  130. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +51 -0
  131. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +239 -0
  132. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +119 -0
  133. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +98 -0
  134. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +161 -0
  135. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +331 -0
  136. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +497 -0
  137. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +162 -0
  138. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +243 -0
  139. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +86 -0
  140. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +187 -0
  141. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +279 -0
  142. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +80 -0
  143. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +306 -0
  144. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +32 -0
  145. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +370 -0
  146. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +132 -0
  147. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +42 -0
  148. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +1329 -0
  149. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +62 -0
  150. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Tracking.kt +15 -0
  151. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +88 -0
  152. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +149 -0
  153. package/gradle/libs.versions.toml +57 -0
  154. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  155. package/gradle/wrapper/gradle-wrapper.properties +8 -0
  156. package/gradle.properties +26 -0
  157. package/gradlew +252 -0
  158. package/gradlew.bat +94 -0
  159. package/package.json +1 -1
  160. package/settings.gradle.kts +52 -0
  161. package/.claude/momo-native-kits-skill/SKILL.md +0 -51
  162. package/.claude/momo-native-kits-skill/evals/evals.json +0 -95
  163. package/.claude/momo-native-kits-skill/workspace/iteration-1/benchmark.json +0 -20
  164. package/.claude/momo-native-kits-skill/workspace/iteration-1/benchmark.md +0 -13
  165. package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-0-button/eval_metadata.json +0 -6
  166. package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-0-button/with_skill/outputs/ButtonExample.kt +0 -55
  167. package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-0-button/without_skill/outputs/ButtonExample.kt +0 -45
  168. package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-1-input/eval_metadata.json +0 -6
  169. package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-1-input/with_skill/outputs/InputPhoneExample.kt +0 -40
  170. package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-1-input/without_skill/outputs/InputPhoneExample.kt +0 -42
  171. package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-2-bottomtab/eval_metadata.json +0 -6
  172. package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-2-bottomtab/with_skill/outputs/BottomTabExample.kt +0 -236
  173. package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-2-bottomtab/without_skill/outputs/BottomTabExample.kt +0 -152
  174. package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-3-checkbox/eval_metadata.json +0 -6
  175. package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-3-checkbox/with_skill/outputs/CheckBoxExample.kt +0 -49
  176. package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-3-checkbox/without_skill/outputs/CheckBoxExample.kt +0 -123
  177. package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-4-datetimepicker/eval_metadata.json +0 -6
  178. package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-4-datetimepicker/with_skill/outputs/DateTimePickerExample.kt +0 -318
  179. package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-4-datetimepicker/without_skill/outputs/DateTimePickerExample.kt +0 -330
  180. package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-card/with_skill/outputs/CardExample.kt +0 -124
  181. package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-card/without_skill/outputs/CardExample.kt +0 -71
  182. package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-loginform/with_skill/outputs/LoginFormExample.kt +0 -134
  183. package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-loginform/without_skill/outputs/LoginFormExample.kt +0 -199
  184. package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-navcontainer/with_skill/outputs/NavigationContainerExample.kt +0 -224
  185. package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-navcontainer/without_skill/outputs/NavigationContainerExample.kt +0 -225
  186. package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-popup/with_skill/outputs/PopupExample.kt +0 -79
  187. package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-popup/without_skill/outputs/PopupExample.kt +0 -169
  188. package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-setoptions/eval_metadata.json +0 -6
  189. package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-setoptions/with_skill/outputs/SetOptionsExample.kt +0 -255
  190. package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-setoptions/without_skill/outputs/SetOptionsExample.kt +0 -212
  191. package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-skeleton/with_skill/outputs/SkeletonExample.kt +0 -199
  192. package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-skeleton/without_skill/outputs/SkeletonExample.kt +0 -229
  193. package/.claude/momo-native-kits-skill/workspace/iteration-3/benchmark.json +0 -20
  194. package/.claude/momo-native-kits-skill/workspace/iteration-3/benchmark.md +0 -13
  195. package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-button/eval_metadata.json +0 -22
  196. package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-button/with_skill/outputs/PrimaryButtonExample.kt +0 -38
  197. package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-button/with_skill/timing.json +0 -5
  198. package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-button/without_skill/outputs/PrimaryButtonExample.kt +0 -83
  199. package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-button/without_skill/timing.json +0 -5
  200. package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-navcontainer/eval_metadata.json +0 -22
  201. package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-navcontainer/with_skill/outputs/NavigationContainerExample.kt +0 -547
  202. package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-navcontainer/with_skill/timing.json +0 -5
  203. package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-navcontainer/without_skill/outputs/MoMoNavigationContainer.kt +0 -519
  204. package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-navcontainer/without_skill/timing.json +0 -5
  205. package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-setoptions/eval_metadata.json +0 -27
  206. package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-setoptions/with_skill/outputs/SetOptionsExample.kt +0 -429
  207. package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-setoptions/with_skill/timing.json +0 -5
  208. package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-setoptions/without_skill/outputs/SetOptionsExample.kt +0 -353
  209. package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-setoptions/without_skill/timing.json +0 -5
  210. package/.claude/settings.local.json +0 -41
  211. /package/.claude/{momo-native-kits-skill → skills/momo-native-kits-skills/data-display}/references/badge.md +0 -0
  212. /package/.claude/{momo-native-kits-skill → skills/momo-native-kits-skills/data-display}/references/chip.md +0 -0
  213. /package/.claude/{momo-native-kits-skill → skills/momo-native-kits-skills/data-display}/references/skeleton.md +0 -0
  214. /package/.claude/{momo-native-kits-skill → skills/momo-native-kits-skills/data-display}/references/text.md +0 -0
  215. /package/.claude/{momo-native-kits-skill → skills/momo-native-kits-skills/feedback}/references/snackbar.md +0 -0
  216. /package/.claude/{momo-native-kits-skill → skills/momo-native-kits-skills/feedback}/references/tooltip.md +0 -0
  217. /package/.claude/{momo-native-kits-skill → skills/momo-native-kits-skills/feedback}/references/trustbanner.md +0 -0
  218. /package/.claude/{momo-native-kits-skill → skills/momo-native-kits-skills/form-controls}/references/checkbox.md +0 -0
  219. /package/.claude/{momo-native-kits-skill → skills/momo-native-kits-skills/form-controls}/references/switch.md +0 -0
  220. /package/.claude/{momo-native-kits-skill → skills/momo-native-kits-skills/layout}/references/card.md +0 -0
  221. /package/.claude/{momo-native-kits-skill → skills/momo-native-kits-skills/layout}/references/divider.md +0 -0
  222. /package/.claude/{momo-native-kits-skill → skills/momo-native-kits-skills/navigation}/references/navigation.md +0 -0
@@ -1,124 +0,0 @@
1
- package com.example
2
-
3
- import androidx.compose.foundation.layout.Column
4
- import androidx.compose.foundation.layout.Row
5
- import androidx.compose.foundation.layout.fillMaxWidth
6
- import androidx.compose.foundation.layout.padding
7
- import androidx.compose.foundation.layout.size
8
- import androidx.compose.runtime.Composable
9
- import androidx.compose.ui.Modifier
10
- import androidx.compose.ui.unit.dp
11
- import vn.momo.kits.components.Card
12
- import vn.momo.kits.components.Image
13
- import vn.momo.kits.components.Text
14
- import vn.momo.kits.components.Title
15
- import vn.momo.kits.components.TitleType
16
-
17
- /**
18
- * Example: Card component to display a list item with image and title
19
- *
20
- * This demonstrates how to create a card in MoMo Native Kits that displays
21
- * a list item with an image on the left and a title on the right.
22
- */
23
- @Composable
24
- fun ListItemCardExample() {
25
- Card(
26
- onClick = {
27
- // Handle item click
28
- },
29
- modifier = Modifier
30
- .fillMaxWidth()
31
- .padding(horizontal = 16.dp, vertical = 8.dp)
32
- ) {
33
- Row(
34
- modifier = Modifier.padding(12.dp)
35
- ) {
36
- // Image on the left
37
- Image(
38
- source = "https://example.com/image.jpg",
39
- modifier = Modifier.size(48.dp)
40
- )
41
-
42
- // Title on the right
43
- Column(
44
- modifier = Modifier.padding(start = 12.dp)
45
- ) {
46
- Title(
47
- text = "Item Title",
48
- type = TitleType.TITLE_4
49
- )
50
- }
51
- }
52
- }
53
- }
54
-
55
- /**
56
- * Alternative example: Card with image and title with description
57
- */
58
- @Composable
59
- fun ListItemCardWithDescriptionExample() {
60
- Card(
61
- onClick = {
62
- // Handle item click
63
- },
64
- modifier = Modifier
65
- .fillMaxWidth()
66
- .padding(horizontal = 16.dp, vertical = 8.dp)
67
- ) {
68
- Row(
69
- modifier = Modifier.padding(12.dp)
70
- ) {
71
- // Image on the left
72
- Image(
73
- source = "https://example.com/avatar.jpg",
74
- modifier = Modifier.size(56.dp)
75
- )
76
-
77
- // Title and description on the right
78
- Column(
79
- modifier = Modifier.padding(start = 12.dp)
80
- ) {
81
- Title(
82
- text = "User Profile",
83
- type = TitleType.TITLE_4
84
- )
85
- Text(
86
- text = "View and edit your profile information",
87
- modifier = Modifier.padding(top = 4.dp)
88
- )
89
- }
90
- }
91
- }
92
- }
93
-
94
- /**
95
- * Example: Static card with image and title (non-clickable)
96
- */
97
- @Composable
98
- fun StaticListItemCardExample() {
99
- Card(
100
- modifier = Modifier
101
- .fillMaxWidth()
102
- .padding(horizontal = 16.dp, vertical = 8.dp)
103
- ) {
104
- Row(
105
- modifier = Modifier.padding(12.dp)
106
- ) {
107
- // Image on the left
108
- Image(
109
- source = "https://example.com/icon.png",
110
- modifier = Modifier.size(40.dp)
111
- )
112
-
113
- // Title on the right
114
- Column(
115
- modifier = Modifier.padding(start = 12.dp)
116
- ) {
117
- Title(
118
- text = "Settings",
119
- type = TitleType.TITLE_4
120
- )
121
- }
122
- }
123
- }
124
- }
@@ -1,71 +0,0 @@
1
- package com.example.card
2
-
3
- import androidx.compose.foundation.layout.Row
4
- import androidx.compose.foundation.layout.Spacer
5
- import androidx.compose.foundation.layout.fillMaxWidth
6
- import androidx.compose.foundation.layout.padding
7
- import androidx.compose.foundation.layout.size
8
- import androidx.compose.foundation.layout.width
9
- import androidx.compose.foundation.shape.RoundedCornerShape
10
- import androidx.compose.material3.Card
11
- import androidx.compose.material3.CardDefaults
12
- import androidx.compose.material3.Text
13
- import androidx.compose.runtime.Composable
14
- import androidx.compose.ui.Alignment
15
- import androidx.compose.ui.Modifier
16
- import androidx.compose.ui.draw.clip
17
- import androidx.compose.ui.layout.ContentScale
18
- import androidx.compose.ui.unit.dp
19
- import coil.compose.AsyncImage
20
-
21
- /**
22
- * A card component to display a list item with image and title
23
- */
24
- @Composable
25
- fun ListItemCard(
26
- imageUrl: String,
27
- title: String,
28
- modifier: Modifier = Modifier
29
- ) {
30
- Card(
31
- modifier = modifier
32
- .fillMaxWidth()
33
- .padding(8.dp),
34
- elevation = CardDefaults.cardElevation(defaultElevation = 4.dp),
35
- shape = RoundedCornerShape(12.dp)
36
- ) {
37
- Row(
38
- modifier = Modifier
39
- .fillMaxWidth()
40
- .padding(12.dp),
41
- verticalAlignment = Alignment.CenterVertically
42
- ) {
43
- // Image
44
- AsyncImage(
45
- model = imageUrl,
46
- contentDescription = title,
47
- modifier = Modifier
48
- .size(60.dp)
49
- .clip(RoundedCornerShape(8.dp)),
50
- contentScale = ContentScale.Crop
51
- )
52
-
53
- Spacer(modifier = Modifier.width(16.dp))
54
-
55
- // Title
56
- Text(
57
- text = title,
58
- modifier = Modifier.weight(1f)
59
- )
60
- }
61
- }
62
- }
63
-
64
- // Example usage
65
- @Composable
66
- fun CardExample() {
67
- ListItemCard(
68
- imageUrl = "https://example.com/image.jpg",
69
- title = "Sample Item Title"
70
- )
71
- }
@@ -1,134 +0,0 @@
1
- package vn.momo.kits.screens
2
-
3
- import androidx.compose.foundation.layout.Arrangement
4
- import androidx.compose.foundation.layout.Column
5
- import androidx.compose.foundation.layout.Spacer
6
- import androidx.compose.foundation.layout.fillMaxSize
7
- import androidx.compose.foundation.layout.fillMaxWidth
8
- import androidx.compose.foundation.layout.height
9
- import androidx.compose.foundation.layout.padding
10
- import androidx.compose.foundation.rememberScrollState
11
- import androidx.compose.foundation.verticalScroll
12
- import androidx.compose.runtime.Composable
13
- import androidx.compose.runtime.MutableState
14
- import androidx.compose.runtime.getValue
15
- import androidx.compose.runtime.mutableStateOf
16
- import androidx.compose.runtime.remember
17
- import androidx.compose.runtime.setValue
18
- import androidx.compose.ui.Alignment
19
- import androidx.compose.ui.Modifier
20
- import androidx.compose.ui.text.input.KeyboardType
21
- import androidx.compose.ui.unit.dp
22
- import vn.momo.kits.components.Button
23
- import vn.momo.kits.components.ButtonType
24
- import vn.momo.kits.components.Input
25
- import vn.momo.kits.components.InputPhoneNumber
26
- import vn.momo.kits.components.Size
27
-
28
- @Composable
29
- fun LoginFormExample() {
30
- val phoneNumber: MutableState<String> = remember { mutableStateOf("") }
31
- val password: MutableState<String> = remember { mutableStateOf("") }
32
- var isLoading by remember { mutableStateOf(false) }
33
- var phoneError by remember { mutableStateOf("") }
34
- var passwordError by remember { mutableStateOf("") }
35
-
36
- Column(
37
- modifier = Modifier
38
- .fillMaxSize()
39
- .padding(horizontal = 16.dp)
40
- .verticalScroll(rememberScrollState()),
41
- horizontalAlignment = Alignment.CenterHorizontally,
42
- verticalArrangement = Arrangement.spacedBy(16.dp)
43
- ) {
44
- Spacer(modifier = Modifier.height(48.dp))
45
-
46
- // Phone number input
47
- InputPhoneNumber(
48
- text = phoneNumber,
49
- onChangeText = {
50
- phoneNumber.value = it
51
- phoneError = "" // Clear error on typing
52
- },
53
- floatingValue = "Số điện thoại",
54
- placeholder = "Nhập số điện thoại",
55
- error = phoneError,
56
- countryCode = "+84",
57
- modifier = Modifier.fillMaxWidth()
58
- )
59
-
60
- // Password input
61
- Input(
62
- text = password,
63
- onChangeText = {
64
- password.value = it
65
- passwordError = "" // Clear error on typing
66
- },
67
- floatingValue = "Mật khẩu",
68
- placeholder = "Nhập mật khẩu",
69
- password = true,
70
- keyboardType = KeyboardType.Password,
71
- error = passwordError,
72
- modifier = Modifier.fillMaxWidth()
73
- )
74
-
75
- Spacer(modifier = Modifier.height(8.dp))
76
-
77
- // Forgot password button
78
- Button(
79
- onClick = { /* Navigate to forgot password */ },
80
- title = "Quên mật khẩu?",
81
- type = ButtonType.TEXT
82
- )
83
-
84
- Spacer(modifier = Modifier.height(16.dp))
85
-
86
- // Login button
87
- Button(
88
- onClick = {
89
- // Validate inputs
90
- var hasError = false
91
-
92
- if (phoneNumber.value.isEmpty()) {
93
- phoneError = "Vui lòng nhập số điện thoại"
94
- hasError = true
95
- } else if (phoneNumber.value.length < 10) {
96
- phoneError = "Số điện thoại không hợp lệ"
97
- hasError = true
98
- }
99
-
100
- if (password.value.isEmpty()) {
101
- passwordError = "Vui lòng nhập mật khẩu"
102
- hasError = true
103
- } else if (password.value.length < 6) {
104
- passwordError = "Mật khẩu phải có ít nhất 6 ký tự"
105
- hasError = true
106
- }
107
-
108
- if (!hasError) {
109
- isLoading = true
110
- // Perform login logic here
111
- // login(phoneNumber.value, password.value)
112
- isLoading = false
113
- }
114
- },
115
- title = "Đăng nhập",
116
- type = ButtonType.PRIMARY,
117
- size = Size.LARGE,
118
- isFull = true,
119
- loading = isLoading,
120
- modifier = Modifier.fillMaxWidth()
121
- )
122
-
123
- Spacer(modifier = Modifier.height(16.dp))
124
-
125
- // Register link
126
- Button(
127
- onClick = { /* Navigate to register */ },
128
- title = "Chưa có tài khoản? Đăng ký ngay",
129
- type = ButtonType.TEXT
130
- )
131
-
132
- Spacer(modifier = Modifier.height(48.dp))
133
- }
134
- }
@@ -1,199 +0,0 @@
1
- package vn.momo.kits.components
2
-
3
- import androidx.compose.foundation.background
4
- import androidx.compose.foundation.layout.Arrangement
5
- import androidx.compose.foundation.layout.Column
6
- import androidx.compose.foundation.layout.Spacer
7
- import androidx.compose.foundation.layout.fillMaxSize
8
- import androidx.compose.foundation.layout.fillMaxWidth
9
- import androidx.compose.foundation.layout.height
10
- import androidx.compose.foundation.layout.padding
11
- import androidx.compose.foundation.rememberScrollState
12
- import androidx.compose.foundation.verticalScroll
13
- import androidx.compose.runtime.Composable
14
- import androidx.compose.runtime.MutableState
15
- import androidx.compose.runtime.mutableStateOf
16
- import androidx.compose.runtime.remember
17
- import androidx.compose.ui.Alignment
18
- import androidx.compose.ui.Modifier
19
- import androidx.compose.ui.unit.dp
20
- import vn.momo.kits.const.AppTheme
21
- import vn.momo.kits.const.Colors
22
- import vn.momo.kits.const.Spacing
23
-
24
- /**
25
- * Login Form Example for MoMo Native Kits
26
- *
27
- * This example demonstrates how to create a login form with:
28
- * - Phone number input with country code (+84 for Vietnam)
29
- * - Password input with visibility toggle
30
- * - Login button
31
- *
32
- * Usage:
33
- * ```kotlin
34
- * LoginFormExample()
35
- * ```
36
- */
37
- @Composable
38
- fun LoginFormExample(
39
- modifier: Modifier = Modifier
40
- ) {
41
- // State management for form fields
42
- val phoneNumber: MutableState<String> = remember { mutableStateOf("") }
43
- val password: MutableState<String> = remember { mutableStateOf("") }
44
-
45
- // Error states
46
- val phoneError: MutableState<String> = remember { mutableStateOf("") }
47
- val passwordError: MutableState<String> = remember { mutableStateOf("") }
48
-
49
- // Loading state
50
- val isLoading: MutableState<Boolean> = remember { mutableStateOf(false) }
51
-
52
- // Theme
53
- val theme = AppTheme.current
54
-
55
- // Form validation
56
- fun validateForm(): Boolean {
57
- var isValid = true
58
-
59
- // Validate phone number
60
- if (phoneNumber.value.isEmpty()) {
61
- phoneError.value = "Vui lòng nhập số điện thoại"
62
- isValid = false
63
- } else if (phoneNumber.value.length < 10) {
64
- phoneError.value = "Số điện thoại không hợp lệ"
65
- isValid = false
66
- } else {
67
- phoneError.value = ""
68
- }
69
-
70
- // Validate password
71
- if (password.value.isEmpty()) {
72
- passwordError.value = "Vui lòng nhập mật khẩu"
73
- isValid = false
74
- } else if (password.value.length < 6) {
75
- passwordError.value = "Mật khẩu phải có ít nhất 6 ký tự"
76
- isValid = false
77
- } else {
78
- passwordError.value = ""
79
- }
80
-
81
- return isValid
82
- }
83
-
84
- // Login handler
85
- fun handleLogin() {
86
- if (validateForm()) {
87
- isLoading.value = true
88
- // Perform login API call here
89
- // For demo purposes, we'll just simulate a delay
90
- android.os.Handler(android.os.Looper.getMainLooper()).postDelayed({
91
- isLoading.value = false
92
- }, 2000)
93
- }
94
- }
95
-
96
- // Clear errors on text change
97
- fun onPhoneNumberChange(value: String) {
98
- phoneNumber.value = value
99
- if (phoneError.value.isNotEmpty()) {
100
- phoneError.value = ""
101
- }
102
- }
103
-
104
- fun onPasswordChange(value: String) {
105
- password.value = value
106
- if (passwordError.value.isNotEmpty()) {
107
- passwordError.value = ""
108
- }
109
- }
110
-
111
- // Main layout
112
- Column(
113
- modifier = modifier
114
- .fillMaxSize()
115
- .background(theme.colors.background.page)
116
- .verticalScroll(rememberScrollState())
117
- .padding(horizontal = Spacing.L)
118
- .padding(top = Spacing.XXL),
119
- horizontalAlignment = Alignment.CenterHorizontally,
120
- verticalArrangement = Arrangement.Top
121
- ) {
122
- // App Logo / Title
123
- Title(
124
- text = "Đăng nhập",
125
- style = vn.momo.kits.const.Typography.headerL
126
- )
127
-
128
- Spacer(modifier = Modifier.height(Spacing.XL))
129
-
130
- // Phone Number Input
131
- InputPhoneNumber(
132
- text = phoneNumber,
133
- placeholder = "Nhập số điện thoại",
134
- size = InputPhoneNumberSize.LARGE,
135
- onChangeText = ::onPhoneNumberChange,
136
- error = phoneError.value,
137
- errorSpacing = true,
138
- modifier = Modifier.fillMaxWidth()
139
- )
140
-
141
- Spacer(modifier = Modifier.height(Spacing.L))
142
-
143
- // Password Input
144
- Input(
145
- text = password,
146
- placeholder = "Nhập mật khẩu",
147
- size = InputSize.LARGE,
148
- onChangeText = ::onPasswordChange,
149
- error = passwordError.value,
150
- errorSpacing = true,
151
- secureTextEntry = true,
152
- leadingIcon = "24_security_lock",
153
- modifier = Modifier.fillMaxWidth()
154
- )
155
-
156
- Spacer(modifier = Modifier.height(Spacing.XL))
157
-
158
- // Login Button
159
- Button(
160
- onClick = ::handleLogin,
161
- title = "Đăng nhập",
162
- type = ButtonType.PRIMARY,
163
- size = Size.LARGE,
164
- loading = isLoading.value,
165
- modifier = Modifier.fillMaxWidth()
166
- )
167
-
168
- Spacer(modifier = Modifier.height(Spacing.L))
169
-
170
- // Forgot Password Link
171
- Column(
172
- horizontalAlignment = Alignment.CenterHorizontally
173
- ) {
174
- vn.momo.kits.components.Text(
175
- text = "Quên mật khẩu?",
176
- style = vn.momo.kits.const.Typography.actionDefaultMedium,
177
- color = theme.colors.primary
178
- )
179
- }
180
-
181
- Spacer(modifier = Modifier.height(Spacing.XXL))
182
-
183
- // Register Link
184
- Column(
185
- horizontalAlignment = Alignment.CenterHorizontally
186
- ) {
187
- vn.momo.kits.components.Text(
188
- text = "Chưa có tài khoản? ",
189
- style = vn.momo.kits.const.Typography.bodyDefaultRegular,
190
- color = theme.colors.text.secondary
191
- )
192
- vn.momo.kits.components.Text(
193
- text = "Đăng ký ngay",
194
- style = vn.momo.kits.const.Typography.bodyDefaultRegular,
195
- color = theme.colors.primary
196
- )
197
- }
198
- }
199
- }