@momo-kits/native-kits 0.157.1-debug → 0.157.1-skill.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/.claude/momo-native-kits/SKILL.md +87 -0
  2. package/.claude/momo-native-kits/references/Badge.md +39 -0
  3. package/.claude/momo-native-kits/references/BadgeDot.md +37 -0
  4. package/.claude/momo-native-kits/references/BottomSheet.md +51 -0
  5. package/.claude/momo-native-kits/references/BottomTab.md +65 -0
  6. package/.claude/momo-native-kits/references/Button.md +197 -0
  7. package/.claude/momo-native-kits/references/CheckBox.md +51 -0
  8. package/.claude/momo-native-kits/references/Chip.md +47 -0
  9. package/.claude/momo-native-kits/references/Divider.md +29 -0
  10. package/.claude/momo-native-kits/references/HeaderTitle.md +45 -0
  11. package/.claude/momo-native-kits/references/HeaderType.md +47 -0
  12. package/.claude/momo-native-kits/references/Icon.md +32 -0
  13. package/.claude/momo-native-kits/references/Image.md +38 -0
  14. package/.claude/momo-native-kits/references/Information.md +36 -0
  15. package/.claude/momo-native-kits/references/Input.md +334 -0
  16. package/.claude/momo-native-kits/references/InputDropDown.md +47 -0
  17. package/.claude/momo-native-kits/references/InputMoney.md +241 -0
  18. package/.claude/momo-native-kits/references/InputOTP.md +52 -0
  19. package/.claude/momo-native-kits/references/InputPhoneNumber.md +175 -0
  20. package/.claude/momo-native-kits/references/InputSearch.md +57 -0
  21. package/.claude/momo-native-kits/references/InputTextArea.md +46 -0
  22. package/.claude/momo-native-kits/references/NavigationContainer.md +51 -0
  23. package/.claude/momo-native-kits/references/Navigator.md +287 -0
  24. package/.claude/momo-native-kits/references/PaginationDot.md +28 -0
  25. package/.claude/momo-native-kits/references/PaginationNumber.md +28 -0
  26. package/.claude/momo-native-kits/references/PopupNotify.md +47 -0
  27. package/.claude/momo-native-kits/references/Radio.md +44 -0
  28. package/.claude/momo-native-kits/references/Skeleton.md +32 -0
  29. package/.claude/momo-native-kits/references/Switch.md +36 -0
  30. package/.claude/momo-native-kits/references/Tag.md +40 -0
  31. package/.claude/momo-native-kits/references/Text.md +37 -0
  32. package/.claude/momo-native-kits/references/Title.md +43 -0
  33. package/.claude/momo-native-kits/references/Tooltip.md +30 -0
  34. package/.claude/settings.local.json +13 -0
  35. package/building-skill-for-claude.md +1190 -0
  36. package/ios/Input/InputPhoneNumber.swift +2 -1
  37. package/package.json +1 -1
  38. package/build.gradle.kts +0 -11
  39. package/compose/build.gradle.kts +0 -180
  40. package/compose/build.gradle.kts.backup +0 -180
  41. package/compose/compose.podspec +0 -54
  42. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +0 -110
  43. package/compose/src/commonMain/composeResources/font/momosignature.otf +0 -0
  44. package/compose/src/commonMain/composeResources/font/momotrustdisplay.otf +0 -0
  45. package/compose/src/commonMain/composeResources/font/sfprotext_black.otf +0 -0
  46. package/compose/src/commonMain/composeResources/font/sfprotext_black.ttf +0 -0
  47. package/compose/src/commonMain/composeResources/font/sfprotext_bold.ttf +0 -0
  48. package/compose/src/commonMain/composeResources/font/sfprotext_heavy.ttf +0 -0
  49. package/compose/src/commonMain/composeResources/font/sfprotext_light.ttf +0 -0
  50. package/compose/src/commonMain/composeResources/font/sfprotext_medium.ttf +0 -0
  51. package/compose/src/commonMain/composeResources/font/sfprotext_regular.ttf +0 -0
  52. package/compose/src/commonMain/composeResources/font/sfprotext_semibold.ttf +0 -0
  53. package/compose/src/commonMain/composeResources/font/sfprotext_thin.otf +0 -0
  54. package/compose/src/commonMain/composeResources/font/sfprotext_thin.ttf +0 -0
  55. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.otf +0 -0
  56. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.ttf +0 -0
  57. package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +0 -57
  58. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +0 -107
  59. package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +0 -201
  60. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +0 -222
  61. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +0 -48
  62. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +0 -86
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +0 -76
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +0 -76
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +0 -305
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +0 -33
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +0 -720
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +0 -121
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +0 -405
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +0 -69
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +0 -85
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +0 -32
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +0 -340
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BaselineView.kt +0 -198
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +0 -339
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +0 -94
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +0 -136
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +0 -543
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +0 -23
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +0 -76
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +0 -148
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +0 -188
  83. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +0 -116
  84. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +0 -448
  85. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +0 -172
  86. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +0 -255
  87. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +0 -231
  88. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +0 -233
  89. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +0 -254
  90. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +0 -241
  91. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +0 -364
  92. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +0 -56
  93. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +0 -41
  94. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +0 -92
  95. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +0 -40
  96. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +0 -352
  97. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +0 -103
  98. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +0 -70
  99. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +0 -17
  100. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +0 -96
  101. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +0 -96
  102. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +0 -92
  103. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +0 -130
  104. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +0 -214
  105. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +0 -576
  106. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +0 -177
  107. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +0 -205
  108. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +0 -29
  109. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +0 -239
  110. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +0 -191
  111. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +0 -306
  112. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +0 -12
  113. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +0 -13
  114. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +0 -185
  115. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +0 -285
  116. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +0 -2
  117. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +0 -35
  118. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +0 -2
  119. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +0 -59
  120. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +0 -68
  121. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +0 -11
  122. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +0 -14
  123. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +0 -50
  124. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +0 -51
  125. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +0 -239
  126. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +0 -119
  127. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +0 -98
  128. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +0 -161
  129. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +0 -331
  130. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +0 -497
  131. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +0 -162
  132. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +0 -243
  133. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +0 -86
  134. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +0 -187
  135. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +0 -279
  136. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +0 -80
  137. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +0 -306
  138. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +0 -32
  139. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +0 -370
  140. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +0 -132
  141. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +0 -42
  142. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +0 -1329
  143. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +0 -62
  144. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Tracking.kt +0 -15
  145. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +0 -88
  146. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +0 -149
  147. package/gradle/libs.versions.toml +0 -57
  148. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  149. package/gradle/wrapper/gradle-wrapper.properties +0 -8
  150. package/gradle.properties +0 -26
  151. package/gradlew +0 -252
  152. package/gradlew.bat +0 -94
  153. package/settings.gradle.kts +0 -52
@@ -0,0 +1,87 @@
1
+ ---
2
+ name: momo-native-kits
3
+ description: UI component library for MoMo Android Compose apps. Use when building or modifying Compose screens in MoMo app.
4
+ ---
5
+
6
+ # momo-native-kits
7
+
8
+ ## Objective
9
+ Build Compose UI screens using MoMo's internal component library.
10
+
11
+ ## Quick Start
12
+
13
+ ```kotlin
14
+ ComposeAppContainer(
15
+ initialScreen = { MyScreen() },
16
+ options = null, // optional
17
+ initialTheme = defaultTheme, // optional
18
+ applicationContext = null // optional
19
+ )
20
+ ```
21
+
22
+ Note: `maxApi`, `config`, `language` are auto-injected internally.
23
+
24
+ ## Components
25
+
26
+ ### Actions
27
+ | Need | Component |
28
+ |------|-----------|
29
+ | Button | Button(type, title, onClick, loading) |
30
+ | Checkbox | CheckBox(checked, onCheckedChange) |
31
+ | Radio | Radio(value, groupValue, onChange) |
32
+ | Switch | Switch(value, onChange) |
33
+
34
+ ### Inputs
35
+ | Need | Component |
36
+ |------|-----------|
37
+ | Text | Input(text, floatingValue, onChangeText) |
38
+ | Phone | InputPhoneNumber(text, onChangeText) |
39
+ | Money | InputMoney(text, floatingValue, onChangeText) |
40
+ | OTP | InputOTP(value, length, onChangeText) |
41
+ | Search | InputSearch(inputSearchProps) |
42
+ | Dropdown | InputDropDown(text, items, onItemSelected) |
43
+
44
+ ### Navigation
45
+ | Need | Component |
46
+ |------|-----------|
47
+ | Container | NavigationContainer |
48
+ | Navigate | navigator.push { Screen() }, navigator.pop() |
49
+ | Bottom sheet | navigator.showBottomSheet { } |
50
+ | Modal | navigator.showModal { } |
51
+
52
+ ### Display
53
+ | Need | Component |
54
+ |------|-----------|
55
+ | Badge | Badge(label) |
56
+ | Tag | Tag(label, color) |
57
+ | Icon | Icon(source, size) |
58
+ | Image | Image(source, modifier) |
59
+ | Text | Text(text, style) |
60
+
61
+ ## Clarification Workflow
62
+
63
+ When prompt is ambiguous, ask:
64
+
65
+ 1. **What component?** (button, input, navigation...)
66
+ 2. **What for?** (confirm, cancel, search, select...)
67
+ 3. **Any specific props?** (type, size, icons, error state...)
68
+
69
+ ### Keywords to Map Intent
70
+ | Component | Keywords |
71
+ |-----------|----------|
72
+ | Button | confirm, submit, cancel, delete, danger |
73
+ | Input | text, name, email, form |
74
+ | InputPhoneNumber | phone, số điện thoại |
75
+ | InputMoney | money, tiền, vnd |
76
+ | InputOTP | otp, mã xác nhận |
77
+ | CheckBox | agree, terms, tick |
78
+ | Switch | toggle, bật tắt, on/off |
79
+ | BottomSheet | modal, popup, slide up |
80
+
81
+ ### Rule: Never Guess
82
+ - DO ask clarifying questions first
83
+ - DO wait for confirmation before implementing
84
+
85
+ ## References
86
+
87
+ See [references/](references/) for detailed component API.
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: badge
3
+ description: Badge component for displaying count or label. Use when showing notification counts, status labels, or count indicators.
4
+ ---
5
+
6
+ # Badge
7
+
8
+ Badge component for displaying count or label.
9
+
10
+ ## Keywords
11
+
12
+ badge, số đếm, notification badge, label
13
+
14
+ ## API
15
+
16
+ ```kotlin
17
+ @Composable
18
+ fun Badge(
19
+ label: String = "Label",
20
+ backgroundColor: Color? = null,
21
+ )
22
+ ```
23
+
24
+ ## Features
25
+
26
+ - Shows "99+" when label > 99
27
+
28
+ ## Examples
29
+
30
+ ```kotlin
31
+ // Number badge
32
+ Badge(label = "5")
33
+
34
+ // Text badge
35
+ Badge(label = "New")
36
+
37
+ // Large number
38
+ Badge(label = "100") // Shows "99+"
39
+ ```
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: badge-dot
3
+ description: Small dot badge for notifications. Use when showing presence indicator or unread notification dot.
4
+ ---
5
+
6
+ # BadgeDot
7
+
8
+ Small dot badge for notifications.
9
+
10
+ ## Keywords
11
+
12
+ dot, small dot, notification dot, chấm tròn
13
+
14
+ ## API
15
+
16
+ ```kotlin
17
+ @Composable
18
+ fun BadgeDot(
19
+ size: BadgeDotSize = BadgeDotSize.MEDIUM,
20
+ color: Color = AppTheme.current.colors.error.primary
21
+ )
22
+
23
+ enum class BadgeDotSize { SMALL, MEDIUM, LARGE }
24
+ ```
25
+
26
+ ## Examples
27
+
28
+ ```kotlin
29
+ // Default (red dot)
30
+ BadgeDot()
31
+
32
+ // Small dot
33
+ BadgeDot(size = BadgeDotSize.SMALL)
34
+
35
+ // Large dot with custom color
36
+ BadgeDot(size = BadgeDotSize.LARGE, color = Colors.green_03)
37
+ ```
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: bottom-sheet
3
+ description: Bottom sheet component for sliding up content. Use when showing modal content that slides up from bottom.
4
+ ---
5
+
6
+ # BottomSheet
7
+
8
+ Bottom sheet component for sliding up content.
9
+
10
+ ## Keywords
11
+
12
+ bottom sheet, slide up, modal, popup
13
+
14
+ ## Usage
15
+
16
+ ```kotlin
17
+ navigator.showBottomSheet(
18
+ content = { /* Content */ },
19
+ isSurface: Boolean = false,
20
+ barrierDismissible: Boolean = true,
21
+ onDismiss: (() -> Unit)? = null,
22
+ bottomSheetHeader: BottomHeader? = null
23
+ )
24
+ ```
25
+
26
+ ## BottomHeader
27
+
28
+ ```kotlin
29
+ // Title header
30
+ BottomHeader.Title(data = "Title")
31
+
32
+ // Custom header
33
+ BottomHeader.Custom { /* Composable */ }
34
+ ```
35
+
36
+ ## Examples
37
+
38
+ ```kotlin
39
+ // Simple bottom sheet
40
+ navigator.showBottomSheet {
41
+ Column(modifier = Modifier.padding(16.dp)) {
42
+ Text("Content")
43
+ }
44
+ }
45
+
46
+ // With header
47
+ navigator.showBottomSheet(
48
+ bottomSheetHeader = BottomHeader.Title("Select"),
49
+ content = { SelectionList() }
50
+ )
51
+ ```
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: bottom-tab
3
+ description: Bottom tab navigation with optional floating button. Use when implementing bottom tab navigation.
4
+ ---
5
+
6
+ # BottomTab
7
+
8
+ Bottom tab navigation with optional floating button.
9
+
10
+ ## Keywords
11
+
12
+ tab, tabs, bottom nav, tab bar
13
+
14
+ ## API
15
+
16
+ ```kotlin
17
+ @Composable
18
+ fun BottomTab(
19
+ items: List<BottomTabItem>,
20
+ floatingButton: BottomTabFloatingButton? = null
21
+ )
22
+
23
+ data class BottomTabItem(
24
+ val name: String,
25
+ val label: String,
26
+ val icon: String,
27
+ val showDot: Boolean = false,
28
+ val badgeLabel: String? = null,
29
+ val screen: @Composable () -> Unit,
30
+ val options: NavigationOptions? = null
31
+ )
32
+
33
+ data class BottomTabFloatingButton(
34
+ val icon: String,
35
+ val label: String,
36
+ val onPress: () -> Unit,
37
+ )
38
+ ```
39
+
40
+ ## Examples
41
+
42
+ ```kotlin
43
+ BottomTab(
44
+ items = listOf(
45
+ BottomTabItem(
46
+ name = "home",
47
+ label = "Home",
48
+ icon = "home",
49
+ screen = { HomeScreen() }
50
+ ),
51
+ BottomTabItem(
52
+ name = "wallet",
53
+ label = "Wallet",
54
+ icon = "wallet",
55
+ badgeLabel = "3",
56
+ screen = { WalletScreen() }
57
+ )
58
+ ),
59
+ floatingButton = BottomTabFloatingButton(
60
+ icon = "qr_code",
61
+ label = "Scan",
62
+ onClick = { /* Scan QR */ }
63
+ )
64
+ )
65
+ ```
@@ -0,0 +1,197 @@
1
+ ---
2
+ name: button
3
+ description: Button component for user actions. Use when user needs to trigger an action (confirm, cancel, submit, delete).
4
+ ---
5
+
6
+ # Button
7
+
8
+ Button component for user actions with various styles and states.
9
+
10
+ ## API
11
+
12
+ ```kotlin
13
+ @Composable
14
+ fun Button(
15
+ onClick: () -> Unit,
16
+ type: ButtonType = ButtonType.PRIMARY,
17
+ size: Size = Size.LARGE,
18
+ iconRight: String = "",
19
+ iconLeft: String = "",
20
+ title: String = "Button",
21
+ loading: Boolean = false,
22
+ useTintColor: Boolean = true,
23
+ isFull: Boolean = true,
24
+ modifier: Modifier = Modifier,
25
+ )
26
+ ```
27
+
28
+ ## Props
29
+
30
+ | Prop | Type | Default | Description |
31
+ |------|------|---------|-------------|
32
+ | `onClick` | `() -> Unit` | **Required** | Callback when button is clicked |
33
+ | `type` | `ButtonType` | `PRIMARY` | Button style variant |
34
+ | `size` | `Size` | `LARGE` | Button size (height) |
35
+ | `iconRight` | `String` | `""` | Icon name to show on right side |
36
+ | `iconLeft` | `String` | `""` | Icon name to show on left side |
37
+ | `title` | `String` | `"Button"` | Button text |
38
+ | `loading` | `Boolean` | `false` | Show loading spinner |
39
+ | `useTintColor` | `Boolean` | `true` | Apply tint color to icon |
40
+ | `isFull` | `Boolean` | `true` | Full width button |
41
+ | `modifier` | `Modifier` | `Modifier` | Compose modifier |
42
+
43
+ ## ButtonType
44
+
45
+ | Type | Description | Background | Border |
46
+ |------|-------------|------------|--------|
47
+ | `PRIMARY` | Main action button | Primary color | None |
48
+ | `SECONDARY` | Secondary action | Surface color | 1dp border |
49
+ | `TONAL` | Tonal background | Tonal color | None |
50
+ | `OUTLINE` | Border only | Surface color | 1dp primary |
51
+ | `DANGER` | Warning/Delete | Error color | None |
52
+ | `TEXT` | Text only | Transparent | None |
53
+ | `DISABLED` | Disabled state | Disable color | None |
54
+
55
+ ## Size
56
+
57
+ | Size | Height | Text Style | Icon Size |
58
+ |------|--------|------------|-----------|
59
+ | `LARGE` | 48dp | actionDefaultBold | 24dp |
60
+ | `MEDIUM` | 36dp | actionSBold | 16dp |
61
+ | `SMALL` | 28dp | actionXsBold | 16dp |
62
+
63
+ ## States
64
+
65
+ - **Default**: Normal button state
66
+ - **Pressed**: 2dp padding shrink + 0.5f alpha animation
67
+ - **Loading**: 0.75f alpha, spinner replaces icon or title
68
+ - **Disabled**: `type = ButtonType.DISABLED` or `type = ButtonType.TEXT`
69
+
70
+ ## Examples
71
+
72
+ ### Basic Usage
73
+
74
+ ```kotlin
75
+ // Primary button (default)
76
+ Button(onClick = { /* action */ }, title = "Confirm")
77
+
78
+ // Secondary button
79
+ Button(onClick = { /* action */ }, title = "Cancel", type = ButtonType.SECONDARY)
80
+
81
+ // Danger button
82
+ Button(onClick = { /* action */ }, title = "Delete", type = ButtonType.DANGER)
83
+ ```
84
+
85
+ ### With Icons
86
+
87
+ ```kotlin
88
+ // Icon on left
89
+ Button(
90
+ onClick = { },
91
+ title = "Confirm",
92
+ iconLeft = "check"
93
+ )
94
+
95
+ // Icon on right
96
+ Button(
97
+ onClick = { },
98
+ title = "Next",
99
+ iconRight = "arrow_forward"
100
+ )
101
+
102
+ // Both icons
103
+ Button(
104
+ onClick = { },
105
+ title = "Send",
106
+ iconLeft = "send",
107
+ iconRight = "chevron_right"
108
+ )
109
+ ```
110
+
111
+ ### Loading State
112
+
113
+ ```kotlin
114
+ // Loading with spinner
115
+ Button(
116
+ onClick = { },
117
+ title = "Loading",
118
+ loading = true
119
+ )
120
+
121
+ // Loading with icon (spinner replaces icon)
122
+ Button(
123
+ onClick = { },
124
+ title = "Submit",
125
+ iconLeft = "save",
126
+ loading = true
127
+ )
128
+ ```
129
+
130
+ ### Sizes
131
+
132
+ ```kotlin
133
+ // Large button (default - 48dp)
134
+ Button(onClick = { }, title = "Large", size = Size.LARGE)
135
+
136
+ // Medium button (36dp)
137
+ Button(onClick = { }, title = "Medium", size = Size.MEDIUM)
138
+
139
+ // Small button (28dp)
140
+ Button(onClick = { }, title = "Small", size = Size.SMALL)
141
+ ```
142
+
143
+ ### Full Width vs Auto Width
144
+
145
+ ```kotlin
146
+ // Full width (default)
147
+ Button(onClick = { }, title = "Full Width", isFull = true)
148
+
149
+ // Auto width
150
+ Button(onClick = { }, title = "Auto", isFull = false)
151
+ ```
152
+
153
+ ### Outline Button
154
+
155
+ ```kotlin
156
+ Button(
157
+ onClick = { },
158
+ title = "Outline",
159
+ type = ButtonType.OUTLINE
160
+ )
161
+ ```
162
+
163
+ ### Text Button
164
+
165
+ ```kotlin
166
+ Button(
167
+ onClick = { },
168
+ title = "Text Only",
169
+ type = ButtonType.TEXT
170
+ )
171
+ ```
172
+
173
+ ### Disabled Button
174
+
175
+ ```kotlin
176
+ // Using DISABLED type
177
+ Button(
178
+ onClick = { },
179
+ title = "Disabled",
180
+ type = ButtonType.DISABLED
181
+ )
182
+
183
+ // Or just don't provide onClick handler
184
+ Button(
185
+ onClick = { }, // Empty or no action
186
+ title = "No Action"
187
+ )
188
+ ```
189
+
190
+ ## Icon Names
191
+
192
+ Common icons available:
193
+ - `check`, `close`, `arrow_back`, `arrow_forward`, `chevron_right`, `chevron_left`
194
+ - `add`, `remove`, `delete`, `edit`, `save`, `send`
195
+ - `home`, `settings`, `search`, `menu`, `more_vert`
196
+
197
+ Use icon names from MoMo's icon library.
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: checkbox
3
+ description: Checkbox component for boolean selection. Use when user needs to select one or more options, agree to terms, or toggle boolean values.
4
+ ---
5
+
6
+ # CheckBox
7
+
8
+ Checkbox component for boolean selection.
9
+
10
+ ## Keywords
11
+
12
+ checkbox, tick, tích chọn, check
13
+
14
+ ## API
15
+
16
+ ```kotlin
17
+ @Composable
18
+ fun CheckBox(
19
+ checked: Boolean = false,
20
+ onCheckedChange: (Boolean) -> Unit,
21
+ title: String = "",
22
+ indeterminate: Boolean = false,
23
+ disabled: Boolean = false,
24
+ )
25
+ ```
26
+
27
+ ## States
28
+
29
+ - Unchecked
30
+ - Checked
31
+ - Indeterminate
32
+ - Disabled
33
+
34
+ ## Examples
35
+
36
+ ```kotlin
37
+ var isChecked by remember { mutableStateOf(false) }
38
+
39
+ CheckBox(
40
+ checked = isChecked,
41
+ onCheckedChange = { isChecked = it },
42
+ title = "I agree"
43
+ )
44
+
45
+ // Indeterminate
46
+ CheckBox(
47
+ checked = isChecked,
48
+ indeterminate = true,
49
+ onCheckedChange = { isChecked = it }
50
+ )
51
+ ```
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: chip
3
+ description: Selectable chip component. Use when displaying filter options, tags, or selectable categories.
4
+ ---
5
+
6
+ # Chip
7
+
8
+ Selectable chip component.
9
+
10
+ ## Keywords
11
+
12
+ chip, filter, selectable, tag chọn
13
+
14
+ ## API
15
+
16
+ ```kotlin
17
+ @Composable
18
+ fun Chip(
19
+ label: String? = "Label",
20
+ iconLeft: String? = null,
21
+ iconRight: String? = null,
22
+ selected: Boolean = false,
23
+ onClick: () -> Unit = {},
24
+ size: ChipSize = ChipSize.LARGE,
25
+ )
26
+
27
+ enum class ChipSize { SMALL, LARGE }
28
+ ```
29
+
30
+ ## Features
31
+
32
+ - Selected state with border
33
+ - Icon support (left/right)
34
+ - Two sizes
35
+
36
+ ## Examples
37
+
38
+ ```kotlin
39
+ // Unselected chip
40
+ Chip(label = "Tag", onClick = { })
41
+
42
+ // Selected chip
43
+ Chip(label = "Selected", selected = true, onClick = { })
44
+
45
+ // Chip with icon
46
+ Chip(label = "Filter", iconLeft = "filter", selected = true, onClick = { })
47
+ ```
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: divider
3
+ description: Divider component for separating content. Use when needing to visually separate sections in a layout.
4
+ ---
5
+
6
+ # Divider
7
+
8
+ Divider component for separating content.
9
+
10
+ ## Keywords
11
+
12
+ divider, line, đường kẻ, separator
13
+
14
+ ## API
15
+
16
+ ```kotlin
17
+ @Composable
18
+ fun Divider()
19
+ ```
20
+
21
+ ## Examples
22
+
23
+ ```kotlin
24
+ Column {
25
+ Text("Content 1")
26
+ Divider()
27
+ Text("Content 2")
28
+ }
29
+ ```
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: header-title
3
+ description: Header title component for navigation header. Use when setting screen title in navigation bar.
4
+ ---
5
+
6
+ # HeaderTitle
7
+
8
+ Header title component for navigation header.
9
+
10
+ ## Keywords
11
+
12
+ header title, tiêu đề header
13
+
14
+ ## Types
15
+
16
+ ```kotlin
17
+ // Simple title
18
+ HeaderTitle.Default("Title")
19
+
20
+ // With subtitle
21
+ HeaderTitle.SubTitle(title = "Title", subTitle = "Subtitle")
22
+
23
+ // User header
24
+ HeaderTitle.User(
25
+ title: String,
26
+ subTitle: String? = null,
27
+ image: List<String>? = null,
28
+ onPress: (() -> Unit)? = null
29
+ )
30
+ ```
31
+
32
+ ## Examples
33
+
34
+ ```kotlin
35
+ navigation.setOptions(
36
+ headerTitle = HeaderTitle.Default("Home")
37
+ )
38
+
39
+ navigation.setOptions(
40
+ headerTitle = HeaderTitle.SubTitle(
41
+ title = "Profile",
42
+ subTitle = "Personal"
43
+ )
44
+ )
45
+ ```
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: header-type
3
+ description: Header type configuration for navigation. Use when customizing header appearance (transparent, default, none, or extended with search/buttons).
4
+ ---
5
+
6
+ # HeaderType
7
+
8
+ Header type configuration for navigation.
9
+
10
+ ## Keywords
11
+
12
+ header, transparent, header type
13
+
14
+ ## Types
15
+
16
+ ```kotlin
17
+ // Default header
18
+ HeaderType.Default()
19
+
20
+ // Extended header
21
+ HeaderType.Extended(
22
+ floatingButton: FloatingButtonProps? = null,
23
+ inputSearchProps: InputSearchProps? = null
24
+ )
25
+
26
+ // Transparent header
27
+ HeaderType.Transparent()
28
+
29
+ // No header
30
+ HeaderType.None()
31
+ ```
32
+
33
+ ## Examples
34
+
35
+ ```kotlin
36
+ navigation.setOptions(
37
+ headerType = HeaderType.Default()
38
+ )
39
+
40
+ navigation.setOptions(
41
+ headerType = HeaderType.Transparent()
42
+ )
43
+
44
+ navigation.setOptions(
45
+ headerType = HeaderType.None()
46
+ )
47
+ ```