@momo-kits/native-kits 0.157.1-skill.1 → 0.157.1-skill.3-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.
- package/.claude/momo-native-kits-skill/SKILL.md +51 -0
- package/.claude/momo-native-kits-skill/evals/evals.json +95 -0
- package/.claude/momo-native-kits-skill/references/badge.md +52 -0
- package/.claude/momo-native-kits-skill/references/button.md +182 -0
- package/.claude/momo-native-kits-skill/references/card.md +48 -0
- package/.claude/momo-native-kits-skill/references/checkbox.md +51 -0
- package/.claude/momo-native-kits-skill/references/chip.md +48 -0
- package/.claude/momo-native-kits-skill/references/constants.md +260 -0
- package/.claude/momo-native-kits-skill/references/divider.md +26 -0
- package/.claude/momo-native-kits-skill/references/input.md +408 -0
- package/.claude/momo-native-kits-skill/references/navigation.md +475 -0
- package/.claude/momo-native-kits-skill/references/popup.md +97 -0
- package/.claude/momo-native-kits-skill/references/radio.md +60 -0
- package/.claude/momo-native-kits-skill/references/skeleton.md +40 -0
- package/.claude/momo-native-kits-skill/references/snackbar.md +54 -0
- package/.claude/momo-native-kits-skill/references/switch.md +62 -0
- package/.claude/momo-native-kits-skill/references/text.md +195 -0
- package/.claude/momo-native-kits-skill/references/tooltip.md +34 -0
- package/.claude/momo-native-kits-skill/references/trustbanner.md +61 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/benchmark.json +20 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/benchmark.md +13 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-0-button/eval_metadata.json +6 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-0-button/with_skill/outputs/ButtonExample.kt +55 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-0-button/without_skill/outputs/ButtonExample.kt +45 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-1-input/eval_metadata.json +6 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-1-input/with_skill/outputs/InputPhoneExample.kt +40 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-1-input/without_skill/outputs/InputPhoneExample.kt +42 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-2-bottomtab/eval_metadata.json +6 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-2-bottomtab/with_skill/outputs/BottomTabExample.kt +236 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-2-bottomtab/without_skill/outputs/BottomTabExample.kt +152 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-3-checkbox/eval_metadata.json +6 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-3-checkbox/with_skill/outputs/CheckBoxExample.kt +49 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-3-checkbox/without_skill/outputs/CheckBoxExample.kt +123 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-4-datetimepicker/eval_metadata.json +6 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-4-datetimepicker/with_skill/outputs/DateTimePickerExample.kt +318 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-4-datetimepicker/without_skill/outputs/DateTimePickerExample.kt +330 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-card/with_skill/outputs/CardExample.kt +124 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-card/without_skill/outputs/CardExample.kt +71 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-loginform/with_skill/outputs/LoginFormExample.kt +134 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-loginform/without_skill/outputs/LoginFormExample.kt +199 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-navcontainer/with_skill/outputs/NavigationContainerExample.kt +224 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-navcontainer/without_skill/outputs/NavigationContainerExample.kt +225 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-popup/with_skill/outputs/PopupExample.kt +79 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-popup/without_skill/outputs/PopupExample.kt +169 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-setoptions/eval_metadata.json +6 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-setoptions/with_skill/outputs/SetOptionsExample.kt +255 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-setoptions/without_skill/outputs/SetOptionsExample.kt +212 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-skeleton/with_skill/outputs/SkeletonExample.kt +199 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-skeleton/without_skill/outputs/SkeletonExample.kt +229 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/benchmark.json +20 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/benchmark.md +13 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-button/eval_metadata.json +22 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-button/with_skill/outputs/PrimaryButtonExample.kt +38 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-button/with_skill/timing.json +5 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-button/without_skill/outputs/PrimaryButtonExample.kt +83 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-button/without_skill/timing.json +5 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-navcontainer/eval_metadata.json +22 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-navcontainer/with_skill/outputs/NavigationContainerExample.kt +547 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-navcontainer/with_skill/timing.json +5 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-navcontainer/without_skill/outputs/MoMoNavigationContainer.kt +519 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-navcontainer/without_skill/timing.json +5 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-setoptions/eval_metadata.json +27 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-setoptions/with_skill/outputs/SetOptionsExample.kt +429 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-setoptions/with_skill/timing.json +5 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-setoptions/without_skill/outputs/SetOptionsExample.kt +353 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-setoptions/without_skill/timing.json +5 -0
- package/.claude/settings.local.json +35 -7
- package/build.gradle.kts +11 -0
- package/compose/build.gradle.kts +180 -0
- package/compose/build.gradle.kts.backup +180 -0
- package/compose/compose.podspec +54 -0
- package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +110 -0
- package/compose/src/commonMain/composeResources/font/momosignature.otf +0 -0
- package/compose/src/commonMain/composeResources/font/momotrustdisplay.otf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_black.otf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_black.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_bold.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_heavy.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_light.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_medium.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_regular.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_semibold.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_thin.otf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_thin.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.otf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.ttf +0 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +57 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +107 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +201 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +222 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +48 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +86 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +76 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +76 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +305 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +33 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +720 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +121 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +405 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +69 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +85 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +32 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +340 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/BaselineView.kt +198 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +357 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +94 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +136 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +543 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +23 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +76 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +148 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +188 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +116 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +448 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +172 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +255 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +231 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +233 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +254 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +241 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +364 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +56 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +41 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +92 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +40 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +352 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +103 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +70 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +17 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +96 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +96 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +92 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +130 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +214 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +590 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +177 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +205 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +29 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +239 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +191 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +306 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +12 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +13 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +185 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +285 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +2 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +35 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +2 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +59 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +68 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +11 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +14 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +50 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +51 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +239 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +119 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +98 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +161 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +331 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +497 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +162 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +243 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +86 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +187 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +279 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +80 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +306 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +32 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +370 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +132 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +42 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +1329 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +62 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Tracking.kt +15 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +88 -0
- package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +149 -0
- package/gradle/libs.versions.toml +57 -0
- package/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/gradle/wrapper/gradle-wrapper.properties +8 -0
- package/gradle.properties +26 -0
- package/gradlew +252 -0
- package/gradlew.bat +94 -0
- package/ios/Input/Input.swift +112 -50
- package/local.properties +8 -0
- package/package.json +1 -1
- package/settings.gradle.kts +52 -0
- package/.claude/momo-native-kits/SKILL.md +0 -87
- package/.claude/momo-native-kits/references/Badge.md +0 -39
- package/.claude/momo-native-kits/references/BadgeDot.md +0 -37
- package/.claude/momo-native-kits/references/BottomSheet.md +0 -51
- package/.claude/momo-native-kits/references/BottomTab.md +0 -65
- package/.claude/momo-native-kits/references/Button.md +0 -197
- package/.claude/momo-native-kits/references/CheckBox.md +0 -51
- package/.claude/momo-native-kits/references/Chip.md +0 -47
- package/.claude/momo-native-kits/references/Divider.md +0 -29
- package/.claude/momo-native-kits/references/HeaderTitle.md +0 -45
- package/.claude/momo-native-kits/references/HeaderType.md +0 -47
- package/.claude/momo-native-kits/references/Icon.md +0 -32
- package/.claude/momo-native-kits/references/Image.md +0 -38
- package/.claude/momo-native-kits/references/Information.md +0 -36
- package/.claude/momo-native-kits/references/Input.md +0 -334
- package/.claude/momo-native-kits/references/InputDropDown.md +0 -47
- package/.claude/momo-native-kits/references/InputMoney.md +0 -241
- package/.claude/momo-native-kits/references/InputOTP.md +0 -52
- package/.claude/momo-native-kits/references/InputPhoneNumber.md +0 -175
- package/.claude/momo-native-kits/references/InputSearch.md +0 -57
- package/.claude/momo-native-kits/references/InputTextArea.md +0 -46
- package/.claude/momo-native-kits/references/NavigationContainer.md +0 -51
- package/.claude/momo-native-kits/references/Navigator.md +0 -287
- package/.claude/momo-native-kits/references/PaginationDot.md +0 -28
- package/.claude/momo-native-kits/references/PaginationNumber.md +0 -28
- package/.claude/momo-native-kits/references/PopupNotify.md +0 -47
- package/.claude/momo-native-kits/references/Radio.md +0 -44
- package/.claude/momo-native-kits/references/Skeleton.md +0 -32
- package/.claude/momo-native-kits/references/Switch.md +0 -36
- package/.claude/momo-native-kits/references/Tag.md +0 -40
- package/.claude/momo-native-kits/references/Text.md +0 -37
- package/.claude/momo-native-kits/references/Title.md +0 -43
- package/.claude/momo-native-kits/references/Tooltip.md +0 -30
- package/building-skill-for-claude.md +0 -1190
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: momo-native-kits-skills
|
|
3
|
+
description: |
|
|
4
|
+
MoMo Native Kits UI Component Rendering - Generate correct, production-ready Kotlin/Compose code for MoMo UI Kit components.
|
|
5
|
+
|
|
6
|
+
Use when:
|
|
7
|
+
- User says "tạo button", "tạo nút bấm", "button component", "primary button"
|
|
8
|
+
- User says "tạo input", "tạo ô nhập liệu", "text field", "form input", "nhập số điện thoại"
|
|
9
|
+
- User says "tạo search", "ô tìm kiếm", "input search", "tìm kiếm"
|
|
10
|
+
- User says "tạo checkbox", "ô tick", "checkbox"
|
|
11
|
+
- User says "tạo radio", "nút chọn", "radio button"
|
|
12
|
+
- User says "tạo switch", "nút gạt", "toggle", "bật/tắt"
|
|
13
|
+
- User says "tạo chip", "chip", "label"
|
|
14
|
+
- User says "tạo card", "thẻ", "khung"
|
|
15
|
+
- User says "tạo divider", "đường kẻ", "phân cách", "line"
|
|
16
|
+
- User says "tạo skeleton", "loading view"
|
|
17
|
+
- User says "tạo badge", "thông báo", "nhãn", "nhãn hiệu"
|
|
18
|
+
- User says "tạo popup", "thông báo", "alert", "xác nhận"
|
|
19
|
+
- User says "tạo snackbar", "toast", "thông báo ngắn", "message"
|
|
20
|
+
- User says "tạo tooltip", "gợi ý", "help", "hướng dẫn"
|
|
21
|
+
- User says "tạo trustbanner", "bảo mật", "trust"
|
|
22
|
+
- User says "tạo navigation", "điều hướng", "Bottom Tab", "BottomNavigation", "tab bar"
|
|
23
|
+
- User says "NavigationContainer", "setOptions", "navigator.push", "pop", "present"
|
|
24
|
+
- User says "Header", "tiêu đề", "app bar", "header type"
|
|
25
|
+
- User says "Text", "Title", "typography", "font", "chữ"
|
|
26
|
+
- User says "màu sắc", "colors", "Spacing", "Radius", "theme"
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
# MoMo Native Kits UI Components
|
|
30
|
+
|
|
31
|
+
## Reference Files
|
|
32
|
+
|
|
33
|
+
| File | Description |
|
|
34
|
+
|------|-------------|
|
|
35
|
+
| [button.md](references/button.md) | Button - nút bấm |
|
|
36
|
+
| [input.md](references/input.md) | Input - các loại input |
|
|
37
|
+
| [text.md](references/text.md) | Text, Title, Typography |
|
|
38
|
+
| [checkbox.md](references/checkbox.md) | CheckBox - ô tick |
|
|
39
|
+
| [radio.md](references/radio.md) | Radio - nút chọn |
|
|
40
|
+
| [switch.md](references/switch.md) | Switch - nút gạt |
|
|
41
|
+
| [chip.md](references/chip.md) | Chip - tag, label |
|
|
42
|
+
| [card.md](references/card.md) | Card - thẻ, khung |
|
|
43
|
+
| [divider.md](references/divider.md) | Divider - đường kẻ |
|
|
44
|
+
| [skeleton.md](references/skeleton.md) | Skeleton - loading |
|
|
45
|
+
| [badge.md](references/badge.md) | Badge, BadgeDot |
|
|
46
|
+
| [trustbanner.md](references/trustbanner.md) | TrustBanner, Information |
|
|
47
|
+
| [popup.md](references/popup.md) | PopupNotify, PopupPromotion |
|
|
48
|
+
| [snackbar.md](references/snackbar.md) | SnackBar |
|
|
49
|
+
| [tooltip.md](references/tooltip.md) | Tooltip |
|
|
50
|
+
| [navigation.md](references/navigation.md) | Navigation, BottomTab, Header |
|
|
51
|
+
| [constants.md](references/constants.md) | Colors, Radius, Spacing, Typography |
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "momo-native-kits-skills",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"prompt": "Show me how to create a primary button with text 'Đăng nhập' in MoMo Native Kits",
|
|
7
|
+
"expected_output": "Kotlin code for Button component with ButtonType.PRIMARY, title='Đăng nhập', proper imports from vn.momo.kits.components",
|
|
8
|
+
"files": []
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": 2,
|
|
12
|
+
"prompt": "I need an input field for phone number with label 'Số điện thoại' and placeholder 'Nhập số điện thoại'",
|
|
13
|
+
"expected_output": "Kotlin code for Input component with label, placeholder, and keyboard type for phone",
|
|
14
|
+
"files": []
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": 3,
|
|
18
|
+
"prompt": "How do I implement a bottom tab navigation with 4 tabs: Home, Wallet, History, Profile in MoMo app?",
|
|
19
|
+
"expected_output": "Kotlin code for BottomTab with BottomTabItem list, proper navigation setup",
|
|
20
|
+
"files": []
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": 4,
|
|
24
|
+
"prompt": "Create a checkbox component for terms and conditions agreement",
|
|
25
|
+
"expected_output": "Kotlin code for CheckBox with label 'Tôi đồng ý với điều khoản'",
|
|
26
|
+
"files": []
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": 5,
|
|
30
|
+
"prompt": "Show me how to use the DateTimePicker component for date selection",
|
|
31
|
+
"expected_output": "Kotlin code for DateTimePicker with selectedDate, onDateSelected parameters",
|
|
32
|
+
"files": []
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": 6,
|
|
36
|
+
"prompt": "I need a search input field like the one in MoMo app",
|
|
37
|
+
"expected_output": "Kotlin code for InputSearch component with placeholder 'Tìm kiếm...'",
|
|
38
|
+
"files": []
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": 7,
|
|
42
|
+
"prompt": "How to create a modal screen in MoMo Native Kits?",
|
|
43
|
+
"expected_output": "Kotlin code for ModalScreen with onDismiss handler",
|
|
44
|
+
"files": []
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": 8,
|
|
48
|
+
"prompt": "Create a switch component for toggling dark mode",
|
|
49
|
+
"expected_output": "Kotlin code for Switch component with checked state and onCheckedChange callback",
|
|
50
|
+
"files": []
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": 9,
|
|
54
|
+
"prompt": "How to use setOptions in MoMo navigation? Show me how to change header title dynamically",
|
|
55
|
+
"expected_output": "Kotlin code showing setOptions in LaunchedEffect(Unit) with LocalNavigation.current",
|
|
56
|
+
"files": []
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": 10,
|
|
60
|
+
"prompt": "Create a login form with phone input and password input in MoMo Native Kits",
|
|
61
|
+
"expected_output": "Kotlin code with InputPhoneNumber, Input (password), and Button components",
|
|
62
|
+
"files": []
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": 11,
|
|
66
|
+
"prompt": "How to implement NavigationContainer in MoMo app? Show me the correct pattern",
|
|
67
|
+
"expected_output": "Kotlin code with single NavigationContainer, initialScreen, and NavigationOptions",
|
|
68
|
+
"files": []
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"id": 12,
|
|
72
|
+
"prompt": "Create a card component to display a list item with image and title",
|
|
73
|
+
"expected_output": "Kotlin code for Card with Image and Title inside",
|
|
74
|
+
"files": []
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"id": 13,
|
|
78
|
+
"prompt": "Show me how to use Navigator to push and pop screens in MoMo",
|
|
79
|
+
"expected_output": "Kotlin code showing navigator.push(), navigator.pop(), navigator.present()",
|
|
80
|
+
"files": []
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": 14,
|
|
84
|
+
"prompt": "Create a loading skeleton for a card component",
|
|
85
|
+
"expected_output": "Kotlin code with Skeleton components showing loading state",
|
|
86
|
+
"files": []
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": 15,
|
|
90
|
+
"prompt": "How to show a popup notification for success message in MoMo?",
|
|
91
|
+
"expected_output": "Kotlin code with PopupNotify and PopupNotifyProps",
|
|
92
|
+
"files": []
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Badge
|
|
2
|
+
|
|
3
|
+
**File:** `vn.momo/kits/components/Badge.kt`
|
|
4
|
+
|
|
5
|
+
## Badge Parameters
|
|
6
|
+
|
|
7
|
+
```kotlin
|
|
8
|
+
@Composable
|
|
9
|
+
fun Badge(
|
|
10
|
+
text: String, // Badge text
|
|
11
|
+
modifier: Modifier = Modifier,
|
|
12
|
+
type: BadgeType = BadgeType.RED
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
enum class BadgeType {
|
|
16
|
+
RED, // Error/new
|
|
17
|
+
GREEN, // Success
|
|
18
|
+
YELLOW, // Warning
|
|
19
|
+
BLUE, // Info
|
|
20
|
+
GRAY // Neutral
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## BadgeDot Parameters
|
|
25
|
+
|
|
26
|
+
**File:** `vn.momo/kits/components/BadgeDot.kt`
|
|
27
|
+
|
|
28
|
+
```kotlin
|
|
29
|
+
@Composable
|
|
30
|
+
fun BadgeDot(
|
|
31
|
+
modifier: Modifier = Modifier,
|
|
32
|
+
color: Color = Colors.red_02
|
|
33
|
+
)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Badge Usage
|
|
37
|
+
|
|
38
|
+
```kotlin
|
|
39
|
+
Row(verticalAlignment = Alignment.CenterVertically) {
|
|
40
|
+
Text(text = "New Feature")
|
|
41
|
+
Badge(text = "NEW", type = BadgeType.RED)
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## BadgeDot Usage
|
|
46
|
+
|
|
47
|
+
```kotlin
|
|
48
|
+
Row {
|
|
49
|
+
Icon(source = "ic_notification")
|
|
50
|
+
BadgeDot(color = Colors.red_02)
|
|
51
|
+
}
|
|
52
|
+
```
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
# Button Component
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The Button component is a core UI element in MoMo Native Kits for triggering actions. It supports multiple types, sizes, and states.
|
|
6
|
+
|
|
7
|
+
**Package:** `vn.momo.kits.components`
|
|
8
|
+
|
|
9
|
+
## Button Types
|
|
10
|
+
|
|
11
|
+
| Type | Description | Use Case |
|
|
12
|
+
|------|-------------|----------|
|
|
13
|
+
| `PRIMARY` | Primary action button with filled background | Main CTA buttons |
|
|
14
|
+
| `SECONDARY` | Secondary action with border | Secondary actions |
|
|
15
|
+
| `TONAL` | Tonal background | Alternative primary actions |
|
|
16
|
+
| `OUTLINE` | Outline style | Tertiary actions |
|
|
17
|
+
| `DANGER` | Error/danger action | Destructive actions |
|
|
18
|
+
| `TEXT` | Text-only button | Subtle actions |
|
|
19
|
+
| `DISABLED` | Disabled state | Unavailable actions |
|
|
20
|
+
|
|
21
|
+
## Button Sizes
|
|
22
|
+
|
|
23
|
+
| Size | Height | Radius | Padding | Width |
|
|
24
|
+
|------|--------|--------|---------|-------|
|
|
25
|
+
| `LARGE` | 48.dp | 4.dp | 16.dp | 128.dp |
|
|
26
|
+
| `MEDIUM` | 36.dp | 4.dp | 12.dp | 80.dp |
|
|
27
|
+
| `SMALL` | 28.dp | 4.dp | 8.dp | 60.dp |
|
|
28
|
+
|
|
29
|
+
## Parameters
|
|
30
|
+
|
|
31
|
+
```kotlin
|
|
32
|
+
@Composable
|
|
33
|
+
fun Button(
|
|
34
|
+
onClick: () -> Unit, // Required: Click handler
|
|
35
|
+
type: ButtonType = ButtonType.PRIMARY,
|
|
36
|
+
size: Size = Size.LARGE,
|
|
37
|
+
title: String = "Button", // Button text
|
|
38
|
+
iconLeft: String = "", // Left icon (icon name or URL)
|
|
39
|
+
iconRight: String = "", // Right icon (icon name or URL)
|
|
40
|
+
loading: Boolean = false, // Show loading spinner
|
|
41
|
+
useTintColor: Boolean = true, // Apply tint color to icons
|
|
42
|
+
isFull: Boolean = true, // Full width button
|
|
43
|
+
modifier: Modifier = Modifier
|
|
44
|
+
)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Usage Examples
|
|
48
|
+
|
|
49
|
+
### Basic Primary Button
|
|
50
|
+
|
|
51
|
+
```kotlin
|
|
52
|
+
import vn.momo.kits.components.Button
|
|
53
|
+
import vn.momo.kits.components.ButtonType
|
|
54
|
+
import vn.momo.kits.components.Size
|
|
55
|
+
|
|
56
|
+
Button(
|
|
57
|
+
onClick = { /* Handle click */ },
|
|
58
|
+
title = "Đăng nhập",
|
|
59
|
+
type = ButtonType.PRIMARY,
|
|
60
|
+
size = Size.LARGE
|
|
61
|
+
)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Button with Icon
|
|
65
|
+
|
|
66
|
+
```kotlin
|
|
67
|
+
Button(
|
|
68
|
+
onClick = { /* Handle click */ },
|
|
69
|
+
title = "Tiếp tục",
|
|
70
|
+
iconRight = "arrow_right", // Icon name from MoMo icon system
|
|
71
|
+
type = ButtonType.PRIMARY,
|
|
72
|
+
size = Size.LARGE
|
|
73
|
+
)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Loading Button
|
|
77
|
+
|
|
78
|
+
```kotlin
|
|
79
|
+
var isLoading by remember { mutableStateOf(false) }
|
|
80
|
+
|
|
81
|
+
Button(
|
|
82
|
+
onClick = {
|
|
83
|
+
isLoading = true
|
|
84
|
+
// Perform async operation
|
|
85
|
+
isLoading = false
|
|
86
|
+
},
|
|
87
|
+
title = "Đăng nhập",
|
|
88
|
+
loading = isLoading,
|
|
89
|
+
type = ButtonType.PRIMARY
|
|
90
|
+
)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Full Width Button
|
|
94
|
+
|
|
95
|
+
```kotlin
|
|
96
|
+
Button(
|
|
97
|
+
onClick = { /* Handle click */ },
|
|
98
|
+
title = "Đăng ký ngay",
|
|
99
|
+
type = ButtonType.PRIMARY,
|
|
100
|
+
isFull = true,
|
|
101
|
+
modifier = Modifier
|
|
102
|
+
.fillMaxWidth()
|
|
103
|
+
.padding(horizontal = 16.dp)
|
|
104
|
+
)
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Danger Button (for destructive actions)
|
|
108
|
+
|
|
109
|
+
```kotlin
|
|
110
|
+
Button(
|
|
111
|
+
onClick = { showDeleteConfirmation() },
|
|
112
|
+
title = "Xóa tài khoản",
|
|
113
|
+
type = ButtonType.DANGER,
|
|
114
|
+
size = Size.LARGE
|
|
115
|
+
)
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Disabled Button
|
|
119
|
+
|
|
120
|
+
```kotlin
|
|
121
|
+
Button(
|
|
122
|
+
onClick = { /* Will not trigger */ },
|
|
123
|
+
title = "Không thể click",
|
|
124
|
+
type = ButtonType.DISABLED,
|
|
125
|
+
enabled = false
|
|
126
|
+
)
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Real World Example: Login Screen
|
|
130
|
+
|
|
131
|
+
```kotlin
|
|
132
|
+
@Composable
|
|
133
|
+
fun LoginScreen() {
|
|
134
|
+
var isLoading by remember { mutableStateOf(false) }
|
|
135
|
+
val phoneNumber = remember { mutableStateOf("") }
|
|
136
|
+
val password = remember { mutableStateOf("") }
|
|
137
|
+
|
|
138
|
+
Column(
|
|
139
|
+
modifier = Modifier.padding(16.dp),
|
|
140
|
+
verticalArrangement = Arrangement.spacedBy(16.dp)
|
|
141
|
+
) {
|
|
142
|
+
// Input fields would go here
|
|
143
|
+
|
|
144
|
+
Button(
|
|
145
|
+
onClick = {
|
|
146
|
+
isLoading = true
|
|
147
|
+
// Perform login
|
|
148
|
+
},
|
|
149
|
+
title = "Đăng nhập",
|
|
150
|
+
type = ButtonType.PRIMARY,
|
|
151
|
+
size = Size.LARGE,
|
|
152
|
+
isFull = true,
|
|
153
|
+
loading = isLoading,
|
|
154
|
+
modifier = Modifier.fillMaxWidth()
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
TextButton(
|
|
158
|
+
onClick = { /* Navigate to forgot password */ },
|
|
159
|
+
title = "Quên mật khẩu?",
|
|
160
|
+
type = ButtonType.TEXT
|
|
161
|
+
)
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Visual States
|
|
167
|
+
|
|
168
|
+
| State | Visual |
|
|
169
|
+
|-------|--------|
|
|
170
|
+
| Default | Full color background |
|
|
171
|
+
| Pressed | 50% opacity, slight scale down |
|
|
172
|
+
| Loading | Spinner replacing icons |
|
|
173
|
+
| Disabled | Gray background, 50% opacity |
|
|
174
|
+
|
|
175
|
+
## Best Practices
|
|
176
|
+
|
|
177
|
+
1. **Use PRIMARY for main CTA** - The most important action on screen
|
|
178
|
+
2. **Use DANGER for destructive actions** - Delete, remove, logout
|
|
179
|
+
3. **Use TEXT for subtle actions** - Links, secondary options
|
|
180
|
+
4. **Set isFull = true for mobile** - Better touch targets
|
|
181
|
+
5. **Always provide loading state** - For async operations > 200ms
|
|
182
|
+
6. **Use consistent sizing** - LARGE for main CTAs, MEDIUM/SMALL for inline
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Card
|
|
2
|
+
|
|
3
|
+
**File:** `vn.momo.kits/layout/Card.kt`
|
|
4
|
+
|
|
5
|
+
## Parameters
|
|
6
|
+
|
|
7
|
+
```kotlin
|
|
8
|
+
@Composable
|
|
9
|
+
fun Card(
|
|
10
|
+
modifier: Modifier = Modifier,
|
|
11
|
+
onClick: (() -> Unit)? = null, // Optional click handler
|
|
12
|
+
elevation: Dp = 2.dp, // Shadow elevation
|
|
13
|
+
cornerRadius: Dp = Radius.M, // Corner radius
|
|
14
|
+
backgroundColor: Color = AppTheme.current.colors.background.surface
|
|
15
|
+
) {
|
|
16
|
+
// Content goes here
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Basic
|
|
21
|
+
|
|
22
|
+
```kotlin
|
|
23
|
+
Card(
|
|
24
|
+
modifier = Modifier.fillMaxWidth()
|
|
25
|
+
) {
|
|
26
|
+
Column(modifier = Modifier.padding(16.dp)) {
|
|
27
|
+
Title(text = "Card Title", type = TitleType.TITLE_3)
|
|
28
|
+
Text(text = "Card content")
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Clickable
|
|
34
|
+
|
|
35
|
+
```kotlin
|
|
36
|
+
Card(
|
|
37
|
+
onClick = { /* Navigate */ },
|
|
38
|
+
modifier = Modifier.fillMaxWidth()
|
|
39
|
+
) {
|
|
40
|
+
Row(modifier = Modifier.padding(16.dp)) {
|
|
41
|
+
Image(source = "image.jpg")
|
|
42
|
+
Column(modifier = Modifier.padding(start = 12.dp)) {
|
|
43
|
+
Title(text = "Item Title")
|
|
44
|
+
Text(text = "Description")
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
```
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# CheckBox
|
|
2
|
+
|
|
3
|
+
**File:** `vn/momo/kits/components/CheckBox.kt`
|
|
4
|
+
|
|
5
|
+
## Parameters
|
|
6
|
+
|
|
7
|
+
```kotlin
|
|
8
|
+
@Composable
|
|
9
|
+
fun CheckBox(
|
|
10
|
+
checked: Boolean, // Required: Checked state
|
|
11
|
+
onCheckedChange: (Boolean) -> Unit, // Required: State change callback
|
|
12
|
+
modifier: Modifier = Modifier,
|
|
13
|
+
title: String = "", // Label text
|
|
14
|
+
enabled: Boolean = true // Enable/disable
|
|
15
|
+
)
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
```kotlin
|
|
21
|
+
var isChecked by remember { mutableStateOf(false) }
|
|
22
|
+
|
|
23
|
+
CheckBox(
|
|
24
|
+
checked = isChecked,
|
|
25
|
+
onCheckedChange = { isChecked = it },
|
|
26
|
+
title = "Đồng ý với điều khoản"
|
|
27
|
+
)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## With Button
|
|
31
|
+
|
|
32
|
+
```kotlin
|
|
33
|
+
@Composable
|
|
34
|
+
fun TermsAgreement() {
|
|
35
|
+
var agreed by remember { mutableStateOf(false) }
|
|
36
|
+
|
|
37
|
+
Column {
|
|
38
|
+
CheckBox(
|
|
39
|
+
checked = agreed,
|
|
40
|
+
onCheckedChange = { agreed = it },
|
|
41
|
+
title = "Tôi đồng ý với Điều khoản sử dụng"
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
Button(
|
|
45
|
+
title = "Tiếp tục",
|
|
46
|
+
type = ButtonType.PRIMARY,
|
|
47
|
+
enabled = agreed
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Chip
|
|
2
|
+
|
|
3
|
+
**File:** `vn/momo/kits/components/Chip.kt`
|
|
4
|
+
|
|
5
|
+
## Parameters
|
|
6
|
+
|
|
7
|
+
```kotlin
|
|
8
|
+
@Composable
|
|
9
|
+
fun Chip(
|
|
10
|
+
text: String, // Required: Chip text
|
|
11
|
+
modifier: Modifier = Modifier,
|
|
12
|
+
isSelected: Boolean = false, // Selected state
|
|
13
|
+
onClick: (() -> Unit)? = null, // Click handler
|
|
14
|
+
leadingIcon: String? = null // Optional leading icon
|
|
15
|
+
)
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
```kotlin
|
|
21
|
+
var selectedChips by remember { mutableStateOf(setOf("food")) }
|
|
22
|
+
|
|
23
|
+
Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) {
|
|
24
|
+
listOf("food", "drink", "dessert", "snack").forEach { chip ->
|
|
25
|
+
Chip(
|
|
26
|
+
text = chip,
|
|
27
|
+
isSelected = chip in selectedChips,
|
|
28
|
+
onClick = {
|
|
29
|
+
selectedChips = if (chip in selectedChips) {
|
|
30
|
+
selectedChips - chip
|
|
31
|
+
} else {
|
|
32
|
+
selectedChips + chip
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## With Icon
|
|
41
|
+
|
|
42
|
+
```kotlin
|
|
43
|
+
Chip(
|
|
44
|
+
text = "With Icon",
|
|
45
|
+
leadingIcon = "ic_tag",
|
|
46
|
+
onClick = { /* Handle click */ }
|
|
47
|
+
)
|
|
48
|
+
```
|