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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/.claude/settings.local.json +11 -0
  2. package/.claude/skills/design-system/SKILL.md +88 -0
  3. package/.claude/skills/design-system/references/components/avatar.md +134 -0
  4. package/.claude/skills/design-system/references/components/badge.md +127 -0
  5. package/.claude/skills/design-system/references/components/bottom-tab.md +177 -0
  6. package/.claude/skills/design-system/references/components/bottomsheet.md +170 -0
  7. package/.claude/skills/design-system/references/components/button.md +206 -0
  8. package/.claude/skills/design-system/references/components/carousel.md +117 -0
  9. package/.claude/skills/design-system/references/components/checkbox.md +98 -0
  10. package/.claude/skills/design-system/references/components/chip.md +146 -0
  11. package/.claude/skills/design-system/references/components/collapse.md +120 -0
  12. package/.claude/skills/design-system/references/components/date-picker.md +119 -0
  13. package/.claude/skills/design-system/references/components/divider.md +84 -0
  14. package/.claude/skills/design-system/references/components/icon.md +130 -0
  15. package/.claude/skills/design-system/references/components/image.md +81 -0
  16. package/.claude/skills/design-system/references/components/information.md +107 -0
  17. package/.claude/skills/design-system/references/components/input-dropdown.md +138 -0
  18. package/.claude/skills/design-system/references/components/input-money.md +157 -0
  19. package/.claude/skills/design-system/references/components/input-otp.md +132 -0
  20. package/.claude/skills/design-system/references/components/input-phone-number.md +140 -0
  21. package/.claude/skills/design-system/references/components/input-search.md +124 -0
  22. package/.claude/skills/design-system/references/components/input-text-area.md +133 -0
  23. package/.claude/skills/design-system/references/components/input.md +152 -0
  24. package/.claude/skills/design-system/references/components/loader.md +87 -0
  25. package/.claude/skills/design-system/references/components/pagination.md +105 -0
  26. package/.claude/skills/design-system/references/components/popup-notify.md +128 -0
  27. package/.claude/skills/design-system/references/components/progress-info.md +114 -0
  28. package/.claude/skills/design-system/references/components/radio.md +86 -0
  29. package/.claude/skills/design-system/references/components/rating.md +126 -0
  30. package/.claude/skills/design-system/references/components/skeleton.md +120 -0
  31. package/.claude/skills/design-system/references/components/slider.md +141 -0
  32. package/.claude/skills/design-system/references/components/snackbar.md +97 -0
  33. package/.claude/skills/design-system/references/components/stepper.md +100 -0
  34. package/.claude/skills/design-system/references/components/steps.md +91 -0
  35. package/.claude/skills/design-system/references/components/suggest-action.md +95 -0
  36. package/.claude/skills/design-system/references/components/swipe.md +121 -0
  37. package/.claude/skills/design-system/references/components/switch.md +98 -0
  38. package/.claude/skills/design-system/references/components/tab-view.md +120 -0
  39. package/.claude/skills/design-system/references/components/tag.md +118 -0
  40. package/.claude/skills/design-system/references/components/text.md +151 -0
  41. package/.claude/skills/design-system/references/components/toast.md +99 -0
  42. package/.claude/skills/design-system/references/components/tooltip.md +138 -0
  43. package/.claude/skills/design-system/references/components/top-nav-miniapp.md +94 -0
  44. package/.claude/skills/design-system/references/components/top-nav.md +226 -0
  45. package/.claude/skills/design-system/references/components/uploader.md +115 -0
  46. package/.claude/skills/design-system/references/navigation/bottom-tab.md +131 -0
  47. package/.claude/skills/design-system/references/navigation/bottomsheet.md +161 -0
  48. package/.claude/skills/design-system/references/navigation/modal.md +133 -0
  49. package/.claude/skills/design-system/references/navigation/navigation-options.md +225 -0
  50. package/.claude/skills/design-system/references/navigation/navigator.md +111 -0
  51. package/.claude/skills/design-system/references/navigation/setup.md +134 -0
  52. package/.claude/skills/design-system/references/navigation/stack.md +128 -0
  53. package/.claude/skills/design-system/references/spec-convention.md +80 -0
  54. package/.claude/skills/design-system/references/tokens/colors.md +131 -0
  55. package/.claude/skills/design-system/references/tokens/spacing-radius.md +144 -0
  56. package/.claude/skills/design-system/references/tokens/theme.md +125 -0
  57. package/.claude/skills/design-system/references/tokens/typography.md +135 -0
  58. package/.claude/skills/design-system-kits/SKILL.md +102 -0
  59. package/.claude/skills/design-system-kits/references/code-convention.md +118 -0
  60. package/.claude/skills/design-system-kits/references/components/avatar.md +45 -0
  61. package/.claude/skills/design-system-kits/references/components/badge.md +27 -0
  62. package/.claude/skills/design-system-kits/references/components/button.md +65 -0
  63. package/.claude/skills/design-system-kits/references/components/carousel.md +51 -0
  64. package/.claude/skills/design-system-kits/references/components/checkbox.md +39 -0
  65. package/.claude/skills/design-system-kits/references/components/chip.md +54 -0
  66. package/.claude/skills/design-system-kits/references/components/collapse.md +63 -0
  67. package/.claude/skills/design-system-kits/references/components/date-picker.md +36 -0
  68. package/.claude/skills/design-system-kits/references/components/divider.md +21 -0
  69. package/.claude/skills/design-system-kits/references/components/icon.md +382 -0
  70. package/.claude/skills/design-system-kits/references/components/image.md +62 -0
  71. package/.claude/skills/design-system-kits/references/components/information.md +61 -0
  72. package/.claude/skills/design-system-kits/references/components/input-dropdown.md +92 -0
  73. package/.claude/skills/design-system-kits/references/components/input-money.md +128 -0
  74. package/.claude/skills/design-system-kits/references/components/input-otp.md +85 -0
  75. package/.claude/skills/design-system-kits/references/components/input-phone-number.md +96 -0
  76. package/.claude/skills/design-system-kits/references/components/input-search.md +127 -0
  77. package/.claude/skills/design-system-kits/references/components/input-text-area.md +100 -0
  78. package/.claude/skills/design-system-kits/references/components/input.md +126 -0
  79. package/.claude/skills/design-system-kits/references/components/loader.md +41 -0
  80. package/.claude/skills/design-system-kits/references/components/pagination.md +47 -0
  81. package/.claude/skills/design-system-kits/references/components/popup-notify.md +69 -0
  82. package/.claude/skills/design-system-kits/references/components/popup-promotion.md +35 -0
  83. package/.claude/skills/design-system-kits/references/components/progress-info.md +55 -0
  84. package/.claude/skills/design-system-kits/references/components/radio.md +42 -0
  85. package/.claude/skills/design-system-kits/references/components/rating.md +36 -0
  86. package/.claude/skills/design-system-kits/references/components/skeleton.md +25 -0
  87. package/.claude/skills/design-system-kits/references/components/slider.md +53 -0
  88. package/.claude/skills/design-system-kits/references/components/snackbar.md +52 -0
  89. package/.claude/skills/design-system-kits/references/components/stepper.md +46 -0
  90. package/.claude/skills/design-system-kits/references/components/steps.md +57 -0
  91. package/.claude/skills/design-system-kits/references/components/suggest-action.md +44 -0
  92. package/.claude/skills/design-system-kits/references/components/swipe.md +44 -0
  93. package/.claude/skills/design-system-kits/references/components/switch.md +43 -0
  94. package/.claude/skills/design-system-kits/references/components/tab-view.md +56 -0
  95. package/.claude/skills/design-system-kits/references/components/tag.md +50 -0
  96. package/.claude/skills/design-system-kits/references/components/text.md +56 -0
  97. package/.claude/skills/design-system-kits/references/components/toast.md +51 -0
  98. package/.claude/skills/design-system-kits/references/components/tooltip.md +95 -0
  99. package/.claude/skills/design-system-kits/references/components/uploader.md +48 -0
  100. package/.claude/skills/design-system-kits/references/design-spec-structure.md +356 -0
  101. package/.claude/skills/design-system-kits/references/design-spec-to-code.md +596 -0
  102. package/.claude/skills/design-system-kits/references/navigation/bottom-tab.md +155 -0
  103. package/.claude/skills/design-system-kits/references/navigation/bottomsheet.md +94 -0
  104. package/.claude/skills/design-system-kits/references/navigation/modal.md +125 -0
  105. package/.claude/skills/design-system-kits/references/navigation/navigation-options.md +430 -0
  106. package/.claude/skills/design-system-kits/references/navigation/navigator.md +177 -0
  107. package/.claude/skills/design-system-kits/references/navigation/setup.md +94 -0
  108. package/.claude/skills/design-system-kits/references/navigation/stack.md +152 -0
  109. package/.claude/skills/design-system-kits/references/screen-layout-rule.md +125 -0
  110. package/.claude/skills/design-system-kits/references/tokens/colors.md +183 -0
  111. package/.claude/skills/design-system-kits/references/tokens/spacing-radius.md +45 -0
  112. package/.claude/skills/design-system-kits/references/tokens/theme.md +97 -0
  113. package/.claude/skills/design-system-kits/references/tokens/typography.md +105 -0
  114. package/.claude/skills/vibe-design/SKILL.md +306 -0
  115. package/compose/build.gradle.kts +1 -1
  116. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +7 -0
  117. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Avatar.kt +157 -0
  118. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Carousel.kt +123 -0
  119. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Collapse.kt +224 -0
  120. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Loader.kt +108 -0
  121. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +2 -2
  122. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ProgressInfo.kt +338 -0
  123. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Rating.kt +87 -0
  124. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Slider.kt +348 -0
  125. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +256 -0
  126. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Steps.kt +494 -0
  127. package/compose/src/commonMain/kotlin/vn/momo/kits/components/SuggestAction.kt +131 -0
  128. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Swipe.kt +215 -0
  129. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +531 -0
  130. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Uploader.kt +192 -0
  131. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +3 -0
  132. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +5 -2
  133. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +2 -11
  134. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +5 -1
  135. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +12 -0
  136. package/gradle.properties +1 -1
  137. package/ios/Popup/PopupPromotion.swift +2 -2
  138. package/local.properties +8 -0
  139. package/package.json +1 -1
@@ -0,0 +1,382 @@
1
+ # Icon
2
+
3
+ ## React Native
4
+
5
+ ```tsx
6
+ import { Icon, IconSources, IconBankSources } from '@momo-kits/foundation';
7
+
8
+ <Icon
9
+ source="ic_back" // icon identifier string (from IconSources) or remote URL
10
+ size={24} // icon size in pixels (default: 24)
11
+ color={Colors.black_17} // tint color (default: theme text color, null = no tint)
12
+ style={{}} // optional custom styles
13
+ accessibilityLabel="settings" // optional accessibility label
14
+ />
15
+ ```
16
+
17
+ ## Compose
18
+
19
+ ```kotlin
20
+ import vn.momo.kits.components.Icon
21
+
22
+ Icon(
23
+ source = "icon_name", // icon identifier string (from Icons) or remote URL
24
+ size = 24.dp, // icon size in dp (default: 24.dp)
25
+ color = Colors.black_17, // tint color (default: theme text color, null = no tint)
26
+ modifier = Modifier, // optional modifier
27
+ )
28
+ ```
29
+
30
+ ## Key Differences
31
+
32
+ | Feature | React Native | Compose |
33
+ |---------|-------------|---------|
34
+ | Source | String (identifier or URL) | String (identifier or URL) |
35
+ | Size | number (pixels) | Dp |
36
+ | Style | `StyleProp<ImageStyle>` via `style` | `Modifier` via `modifier` |
37
+
38
+ ## IconSources (1350 icons)
39
+
40
+ All icons are remote PNG images hosted on `img.mservice.com.vn` or `static.momocdn.net`. The `source` prop accepts either an icon key string or a remote HTTP URL.
41
+
42
+ ### Naming Convention
43
+
44
+ Icons follow the pattern: `[size_]category_name`
45
+
46
+ - **No size prefix** = default 24px asset (legacy naming)
47
+ - **Size prefix**: `16_`, `24_`, `32_`, `48_` = specific size variant
48
+
49
+ ### Categories
50
+
51
+ #### Arrow (`arrow_*`)
52
+ Navigation arrows, chevrons, rotation, undo/redo.
53
+ - `arrow_arrow-back`, `arrow_arrow-down`, `arrow_arrow-next`, `arrow_arrow-top`
54
+ - `arrow_chevron_down`, `arrow_chevron_left`, `arrow_chevron_right`, `arrow_chevron_up`
55
+ - `arrow_chevron_down_small`, `arrow_chevron_left_small`, `arrow_chevron_right_small`, `arrow_chevron_up_small`
56
+ - `arrow_chevrons_double_down`, `arrow_chevrons_double_left`, `arrow_chevrons_double_right`, `arrow_chevrons_double_up`
57
+ - `arrow_circle_chevron_bottom`, `arrow_circle_chevron_left`, `arrow_circle_chevron_right`, `arrow_circle_chevron_top`
58
+ - `arrow_arrow_bold_forward`, `arrow_arrow_bold_forward_all`, `arrow_arrow_bold_redo`, `arrow_arrow_bold_reply`, `arrow_arrow_bold_reply_all`, `arrow_arrow_bold_undo`
59
+ - `arrow_arrow_forward`, `arrow_arrow_redo`, `arrow_arrow_reply`, `arrow_arrow_undo`
60
+ - `arrow_diagonals`, `arrow_diagonals_bltr`, `arrow_diagonals_tlbr`, `arrow_hv`
61
+ - `arrow_redo`, `arrow_undo`, `arrow_refresh_ccw`, `arrow_refresh_ccw_alert`, `arrow_rotate_ccw`, `arrow_rotate_cw`
62
+
63
+ #### Basic (`basic_*`)
64
+ Common UI actions and user-related icons.
65
+ - `basic_account`, `basic_person`, `basic_person_add`, `basic_person_block`, `basic_person_check`, `basic_person_group`, `basic_person_minus`, `basic_person_tag`
66
+ - `basic_home`, `basic_setting`, `basic_power`, `basic_options`, `basic_filter`, `basic_sorting`, `basic_sort_a_z`
67
+ - `basic_copy`, `basic_delete`, `basic_duplicate`, `basic_flag`
68
+ - `basic_chart`, `basic_chart_down`, `basic_chart_up`
69
+ - `basic_ticket`, `basic_ticket_full`, `basic_ticket_star`, `basic_ticket_star_full`
70
+ - `basic_name_tag`, `basic_Moon`, `basic_sun`, `basic_screen_rotation`, `basic_screen_rotation_lock`
71
+ - `basic_pubic`, `basic_pubic_explore`, `basic_pubic_off`, `basic_suport_24`, `basic_support_24h`
72
+
73
+ #### Chat (`chat_*`)
74
+ Messaging and conversation icons.
75
+ - `chat_comment`, `chat_comment_alert`, `chat_comment_checked`, `chat_comment_delete`, `chat_comment_empty`, `chat_comment_minus`, `chat_comment_plus`
76
+ - `chat_q_and_a`, `chat_sent`, `chat_sticker`, `chat_bot`, `chat_back_space`
77
+
78
+ #### Connection (`connection_*`)
79
+ Connectivity and sharing icons.
80
+ - `connection_wifi`, `connection_wifi_no`, `connection_bluetooth`, `connection_bluetooth_no`
81
+ - `connection_link`, `connection_link_disable`, `connection_share`, `connection_share_2`
82
+ - `connection_airplay`, `connection_broadcast`, `connection_broadcasting`, `connection_cast`, `connection_mail`
83
+
84
+ #### File (`file_*`)
85
+ Document and file management icons.
86
+ - `file`, `file_text`, `file_code`, `file_draft`, `file_scan`, `file_search`
87
+ - `file_edit`, `file_edit_in_box`, `file_file_create`, `file_delete`, `file_download`, `file_upload`
88
+ - `file_checked`, `file_minus`, `file_plus`, `file_pin`, `file_unpin`
89
+ - `file_folder`, `file_folder_checked`, `file_folder_cloud`, `file_folder_create`, `file_folder_delete`, `file_folder_forward`, `file_folder_minus`, `file_folder_music`, `file_folder_opened`, `file_folder_photo`, `file_folder_plus`, `file_folder_zip`
90
+ - `file_clipboard`, `file_clipboard_checked`, `file_clipboard_delete`, `file_clipboard_minus`, `file_clipboard_note`, `file_clipboard_plus`
91
+ - `file_cloud`, `file_cloud_checked`, `file_cloud_connect`, `file_cloud_download`, `file_cloud_no`, `file_cloud_upload`
92
+ - `file_briefcase`, `file_database`, `file_mail`, `file_paperclip`, `file_paperclip_no`, `file_shredder`
93
+
94
+ #### Finance (`finance_*`)
95
+ Payment and financial icons.
96
+ - `finance_wallet`, `finance_safe`, `finance_atm`, `finance_credit_card`
97
+ - `finance_card_1`, `finance_card_2`, `finance_card_jcb`, `finance_card_master`, `finance_card_visa`
98
+ - `finance_jcb`, `finance_master`, `finance_visa`, `finance_paypass`
99
+ - `finance_saving`, `finance_cash`
100
+
101
+ #### Gadgets (`gadgets_*`)
102
+ Device and hardware icons.
103
+ - `gadgets_devices`, `gadgets_mobile`, `gadgets_iphone`, `gadgets_ipad`, `gadgets_laptop`, `gadgets_monitor`
104
+ - `gadgets_keyboard`, `gadgets_mouse`, `gadgets_print`, `gadgets_server`
105
+ - `gadgets_memory_card`, `gadgets_soft_disk`, `gadgets_usb`
106
+
107
+ #### Logistics (`logicstics_*`)
108
+ Delivery and shipping icons.
109
+ - `logicstics_delivery`, `logicstics_delivery_fast`, `logicstics_delivey_bike`
110
+ - `logicstics_package`, `logicstics_package_cancel`, `logicstics_package_done`, `logicstics_package_list`, `logicstics_package_preparing`
111
+ - `logicstics_trolley_package`
112
+
113
+ #### Maps (`maps_*`)
114
+ Location and navigation icons.
115
+ - `maps_location`, `maps_location_no`, `maps_pin`, `maps_pin_add`, `maps_pin_edit`, `maps_pin_no`, `maps_pin_question`, `maps_pin_round`, `maps_pin_start`
116
+ - `maps_map`, `maps_map_pin_location`, `maps_globe`, `maps_compass`, `maps_radar`, `maps_route`
117
+ - `maps_direction`, `maps_direction_45`, `maps_360`, `maps_panorama`
118
+ - `maps_zoom_in`, `maps_zoom_out`
119
+
120
+ #### Media (`media_*`)
121
+ Camera, audio, video, and player controls.
122
+ - `media`, `media_add`, `media_search`, `media_collection`
123
+ - `media_camera`, `media_camera_add`, `media_camera_linked`, `media_camera_switch`
124
+ - `media_video`, `media_record`, `media_slideshow`, `media_timelapse`
125
+ - `media_flash_auto`, `media_flash_off`, `media_flash_on`, `media_flashlight_on`, `media_flashlight_off`, `media_flashlight_disable`
126
+ - `media_player_pause_circle`, `media_player_play_circle`, `media_player_stop_circle`
127
+ - `media_volume`, `media_volume_high`, `media_volume_low`, `media_volume_no`, `media_volume_off`
128
+ - `media_repeat`, `media_shuffle`, `media_rotate_left`, `media_rotate_right`
129
+ - `media_timer`, `media_timer_3s`, `media_timer_10s`, `media_timer_off`, `media_shutter_speed`
130
+ - `media_cd`, `media_color_picker`, `media_control_point`, `media_focus`, `media_leak_add`
131
+ - `media_color`, `media_flip`, `media_crop`, `media_nope`
132
+
133
+ #### Navigation (`navigation_*`)
134
+ App navigation and control icons.
135
+ - `navigation_close`, `navigation_close_circle`, `navigation_close_circle_full`, `navigation_close_circle_full_02`, `navigation_close_circle_full_2`
136
+ - `navigation_plus`, `navigation_plus_circle`, `navigation_plus_circle_full`
137
+ - `navigation_minus`, `navigation_minus_circle`, `navigation_minus_circle_full`
138
+ - `navigation_menu`, `navigation_more_horiz`, `navigation_more_vert`
139
+ - `navigation_search`, `navigation_search_add`, `navigation_search_minus`
140
+ - `navigation_app`, `navigation_cash_in`, `navigation_qrcode`, `navigation_scan`
141
+ - `navigation_full_screen`, `navigation_full_screen_exit`, `navigation_log_out`
142
+ - `navigation_unfold_less`, `navigation_unfold_more`
143
+ - `navigation_remove_from_home`, `navigation_add_to_home`
144
+
145
+ #### Notifications (`notifications_*`)
146
+ Alerts, status, and notification icons.
147
+ - `notifications_bell`, `notifications_bell_add`, `notifications_bell_alert`, `notifications_bell_checked`, `notifications_bell_full`, `notifications_bell_minus`, `notifications_bell_no`
148
+ - `notifications_check`, `notifications_check_circle`, `notifications_check_circle_full`, `notifications_check_double`
149
+ - `notifications_alert_octagon`, `notifications_alert_triangle`, `notifications_app_notification`
150
+ - `notifications_circle_alert`, `notifications_circle_question`, `notifications_info`
151
+ - `notifications_minus_octagon`, `notifications_x_octagon`
152
+ - `notifications_guide`
153
+
154
+ #### Phone Call (`phone_call_*`)
155
+ Calling and telephony icons.
156
+ - `phone_call`, `phone_call_add`, `phone_call_decline`, `phone_call_end`
157
+ - `phone_call_incoming`, `phone_call_outcoming`, `phone_call_missed`, `phone_call_forwarded`, `phone_call_recieved`
158
+ - `phone_call_hold`, `phone_call_muted`, `phone_call_no`, `phone_call_phone_calling`
159
+ - `phone_call_mic_off`, `phone_call_mic_on`, `phone_call_voicemail`
160
+ - `phone_call_hash`, `phone_call_numbers`
161
+
162
+ #### Reaction (`reaction_*`)
163
+ Emoji, likes, and rating icons.
164
+ - `reaction_emoji_happy`, `reaction_emoji_sad`, `reaction_emoji_satisfy`
165
+ - `reaction_heart`, `reaction_heart_full`, `reaction_heart_disable`
166
+ - `reaction_like`, `reaction_like_dislike`
167
+ - `reaction_star_full`, `reaction_star_half`, `reaction_star_non`
168
+
169
+ #### Security (`security_*`)
170
+ Authentication and security icons.
171
+ - `security_lock`, `security_lock_no`, `security_unlock`
172
+ - `security_eye_open`, `security_eye_off`, `security_fingerprint`, `security_verifiedface_id`
173
+ - `security_key`, `security_key_no`, `security_password`
174
+ - `security_shield`, `security_shield_admin`, `security_shield_check`, `security_shield_disable`
175
+
176
+ #### Shopping (`shopping_*`)
177
+ E-commerce and retail icons.
178
+ - `shopping_bag`, `shopping_bag_shopping`, `shopping_cart`, `shopping_store`
179
+ - `shopping_coupon`, `shopping_coupon_star`, `shopping_tag`, `shopping_tag_love`
180
+ - `shopping_gift_card`, `shopping_fast_food`, `shopping_restaurant`
181
+
182
+ #### Time (`time_*`)
183
+ Clock, calendar, and scheduling icons.
184
+ - `time_clock`, `time_clock_reset`, `time_watch`, `time_stop_watch`, `time_stop_watch_disable`
185
+ - `time_alarm`, `time_alarm_add`, `time_alarm_check`, `time_alarm_remove`
186
+ - `time_calendar`, `time_calendar_add`, `time_calendar_checked`, `time_calendar_remove`, `time_calendar_x`
187
+ - `time_note`
188
+
189
+ #### Travel (`travel_*`)
190
+ Transportation, accommodation, and people icons.
191
+ - **Transport**: `travel_plane`, `travel_plane_landing`, `travel_plane_take_off`, `travel_car`, `travel_bus`, `travel_taxi`, `travel_subway`, `travel_train_1`, `travel_train_2`, `travel_tram`, `travel_van`, `travel_bike`
192
+ - **Accommodation**: `travel_hotel`, `travel_villa`, `travel_apartment`, `travel_bed`, `travel_bed-single`, `travel_bathtub`, `travel_hottub`
193
+ - **Amenities**: `travel_kitchen`, `travel_fridge`, `travel_microwave`, `travel_coffee_maker`, `travel_iron`, `travel_laundry`, `travel_dry_clean`, `travel_cleaning_services`, `travel_parking`, `travel_gas_station`, `travel_wc`
194
+ - **People**: `travel_people_man`, `travel_people_woman`, `travel_people_women_pregnant`, `travel_people_kid`, `travel_people_baby`, `travel_people_old`, `travel_people_family`, `travel_people_college`, `travel_people_run`, `travel_people_walk`, `travel_people_wheelchair`
195
+ - **Seating**: `travel_seat_comfort`, `travel_seat_economy`, `travel_seat_extra_seat`
196
+ - **Other**: `travel_Cold`, `travel_Karaoke`, `travel_suport_service`, `travel_airconditional`
197
+
198
+ ### Special Icons
199
+
200
+ #### MoMo Main (`momomain_*`)
201
+ MoMo app tab bar and core feature icons.
202
+ - `momomain_account`, `momomain_chat`, `momomain_gift`, `momomain_history`, `momomain_momo`
203
+ - `momomain_barcode`, `momomain_barcode_s`, `momomain_scan_code`, `momomain_scan_code_s`
204
+ - `momomain_money_in`, `momomain_money_in_s`, `momomain_withdraw`, `momomain_withdraw_2`
205
+
206
+ #### Tab Bar Icons
207
+ Bottom tab active/inactive states for various features.
208
+ - `home_momo_active`, `home_momo_inactive`, `home_wallet_inactive`
209
+ - `home_friends_active`, `home_friends_inactive`
210
+ - `home_history_active`, `home_history_inactive`
211
+ - `home_promotions_active`, `home_promotions_inactive`
212
+ - `cinema_theaters_picking_active`, `cinema_theaters_picking_disable`
213
+ - `cinema_ticket_active`, `cinema_ticket_disable`, `cinema_ticket_my_active`, `cinema_ticket_my_inactive`
214
+ - `shop_online_home_active`, `shop_online_home_inactive`
215
+ - `shop_online_favorite_active`, `shop_online_favorite_inactive`
216
+ - `shop_online_order_active`, `shop_online_order_inactive`
217
+ - `shop_online_address_book_active`, `shop_online_address_book_inactive`
218
+
219
+ #### Graphics (`graphic_*`)
220
+ Illustration-style empty states and placeholders.
221
+ - `graphic_wifi_disconnect`, `graphic_time_out`, `graphic_not_found`, `graphic_no_data`, `graphic_no_location`
222
+ - `graphic_notification`, `graphic_missing`, `graphic_maintance`, `graphic_merchant`
223
+ - `graphic_ticket`, `graphic_photo`, `graphic_comment`, `graphic_avatar`
224
+ - `graphic_logo`, `graphic_file_default`, `graphic_directory`
225
+
226
+ #### Common UI Icons (`ic_*`)
227
+ Frequently used standalone icons.
228
+ - `ic_back`, `ic_back_android`, `ic_back_ios`, `ic_back_arrow`
229
+ - `ic_close_24`, `ic_close_x_24`, `ic_close_circle_full`
230
+ - `ic_check_24`, `ic_check_mini`, `ic_checked`, `ic_checkbox_checked_24`, `ic_checkbox_unchecked_24`
231
+ - `ic_warning`, `ic_warning_24`, `ic_error`, `ic_info_gray`
232
+ - `ic_plus`, `ic_minus`, `ic_arrow_next`, `ic_arrow_drop_down_24`
233
+ - `ic_eye_24`, `ic_calendar`, `ic_location_24`, `ic_navigation`
234
+ - `ic_star`, `ic_star_selected`, `ic_momo`, `ic_momo_small_bottom_left`, `ic_round_momo_tiny`
235
+ - `ic_money`, `ic_money_bag`, `ic_discount_voucher`, `ic_tag_voucher`
236
+ - `ic_camera_circle`, `ic_backspace_24`, `ic_line`
237
+ - `ic_notification_info`, `ic_cinema_poster`, `ic_momo_gift`
238
+ - `ic_transaction_history_status_fail`, `ic_transaction_history_status_success`, `ic_transaction_history_status_processing`
239
+ - `ic_success_process_white`, `ic_film_pin`, `ic_film_ticket`
240
+ - `ic_step_active`, `ic_step_coming`, `ic_support`
241
+
242
+ #### Miscellaneous
243
+ - `Phonebook`, `phonebook_outline`, `home_banner`, `request_money`
244
+ - `share`, `addFavorite`, `addShortcut`, `header_background`, `media_fail`
245
+ - `help_center`, `arrow-back`, `pin_star`, `pin_star_checked`, `navigation_more_icon`
246
+ - `file_pinned`, `basic_flaged`, `basic_user`
247
+
248
+ ### Sized Variants
249
+
250
+ Many icons have size-specific variants with prefixes: `16_`, `24_`, `32_`, `48_`.
251
+
252
+ Examples:
253
+ - `16_arrow_chevron_right` (16px), `24_arrow_chevron_right` (24px)
254
+ - `16_basic_account`, `24_basic_account`
255
+ - `16_notifications_bell`, `24_notifications_bell`, `32_notifications_bell`, `48_notifications_bell`
256
+
257
+ Available size prefixes per category:
258
+ - **16 + 24**: arrow, basic, chatting, connection, file, finance, gadgets, maps, media, navigation, phone_call, reaction, security, shopping, time, travel
259
+ - **32 + 48**: notifications, security (select icons)
260
+ - **24 only**: toggle (`24_toggle_check_box_checked`, `24_toggle_radio_selected`, `24_toggle_turn_on`, etc.)
261
+
262
+ ## IconBankSources (168 icons)
263
+
264
+ Bank and payment provider logos. Each bank has two variants:
265
+ - `{bank}_full` — Full logo with bank name
266
+ - `{bank}_icon` — Compact square icon
267
+
268
+ ```tsx
269
+ import { IconSources, IconBankSources } from '@momo-kits/foundation';
270
+
271
+ // Common usage: dot notation + .uri to get the URL string
272
+ const momoIcon = IconSources.momomain_momo.uri; // "https://img.mservice.com.vn/..."
273
+ const bankIcon = IconBankSources.bidv_icon.uri; // "https://static.momocdn.net/..."
274
+ const bankFull = IconBankSources.bidv_full.uri; // "https://static.momocdn.net/..."
275
+
276
+ // For <Icon> component, just pass the string key name directly
277
+ <Icon source="momomain_momo" size={24} />
278
+ ```
279
+
280
+ ### Available Banks
281
+
282
+ | Key prefix | Bank name |
283
+ |-----------|-----------|
284
+ | `abbank` | ABBank |
285
+ | `acb` | ACB |
286
+ | `argibank` | Agribank |
287
+ | `bac_a_bank` | Bac A Bank |
288
+ | `baoviet_bank` | BaoViet Bank |
289
+ | `bidv` | BIDV |
290
+ | `cake_by vpbank` | Cake by VPBank |
291
+ | `cimb` | CIMB |
292
+ | `donga_bank` | DongA Bank |
293
+ | `eximbank` | Eximbank |
294
+ | `hdbank` | HDBank |
295
+ | `hsbc` | HSBC |
296
+ | `ivb` | IVB |
297
+ | `kb` | KB |
298
+ | `kienlong_bank` | KienLong Bank |
299
+ | `lienviet_postbank` | LienViet PostBank |
300
+ | `mb_bank` | MB Bank |
301
+ | `msb` | MSB |
302
+ | `nam_a_bank` | Nam A Bank |
303
+ | `ncb` | NCB |
304
+ | `ocb` | OCB |
305
+ | `ocean_bank` | Ocean Bank |
306
+ | `pg_bank` | PG Bank |
307
+ | `pvcom_bank` | PVCom Bank |
308
+ | `scb` | SCB |
309
+ | `sea_bank` | SeABank |
310
+ | `shb` | SHB |
311
+ | `shinhan_bank` | Shinhan Bank |
312
+ | `techcombank` | Techcombank |
313
+ | `timo` | Timo |
314
+ | `tpbank` | TPBank |
315
+ | `vib` | VIB |
316
+ | `viet_a bank` | VietABank |
317
+ | `viet_capital bank` | Viet Capital Bank |
318
+ | `vietcombank` | Vietcombank |
319
+ | `vietinbank` | VietinBank |
320
+ | `vpbank` | VPBank |
321
+ | `gpbank` | GPBank |
322
+ | `dsb` | DSB |
323
+ | `cb` | CB |
324
+ | `bidc` | BIDC |
325
+
326
+ ### E-wallets & Payment Providers
327
+
328
+ | Key prefix | Provider |
329
+ |-----------|----------|
330
+ | `momo` | MoMo |
331
+ | `grabpay_by_moca` | GrabPay by Moca |
332
+ | `moca` | Moca |
333
+ | `shopeepay` | ShopeePay |
334
+ | `zalopay` | ZaloPay |
335
+ | `vnpay` | VNPay |
336
+ | `vnpay_money` | VNPay Money |
337
+ | `viettel_money` | Viettel Money |
338
+ | `viettel_pay` | Viettel Pay |
339
+ | `truemoney` | TrueMoney |
340
+ | `vinid` | VinID |
341
+ | `payme` | PayMe |
342
+
343
+ ### Other Financial Services
344
+
345
+ | Key prefix | Provider |
346
+ |-----------|----------|
347
+ | `napas` | NAPAS |
348
+ | `baokim` | BaoKim |
349
+ | `ecpay` | ECPay |
350
+ | `ngan_luong` | Ngan Luong |
351
+ | `nextpay` | NextPay |
352
+ | `payoo` | Payoo |
353
+ | `vtcpay` | VTCPay |
354
+ | `vimo` | ViMo |
355
+ | `apota` | Apota |
356
+
357
+ ### International Banks
358
+
359
+ | Key prefix | Bank |
360
+ |-----------|------|
361
+ | `anz` | ANZ |
362
+ | `bangkok_bank` | Bangkok Bank |
363
+ | `bank_of china` | Bank of China |
364
+ | `cathay_bank` | Cathay Bank |
365
+ | `chase_bank` | Chase Bank |
366
+ | `citibank` | Citibank |
367
+ | `commonwealth_bank` | Commonwealth Bank |
368
+ | `deutsche_bank` | Deutsche Bank |
369
+ | `hong_leong bank` | Hong Leong Bank |
370
+ | `industrial_bank of korea` | Industrial Bank of Korea |
371
+ | `keb_hana bank` | KEB Hana Bank |
372
+ | `maybank` | Maybank |
373
+ | `mega_international commercial bank` | Mega International Commercial Bank |
374
+ | `mizuho` | Mizuho |
375
+ | `public_bank` | Public Bank |
376
+ | `scotiabank` | Scotiabank |
377
+ | `smfg` | SMFG |
378
+ | `standard_chartered` | Standard Chartered |
379
+ | `tyme` | Tyme |
380
+ | `tymebank` | TymeBank |
381
+ | `ubsp` | UBSP |
382
+ | `woori_bank` | Woori Bank |
@@ -0,0 +1,62 @@
1
+ # Image
2
+
3
+ ## React Native
4
+
5
+ ```tsx
6
+ import { Image } from '@momo-kits/foundation';
7
+
8
+ <Image
9
+ source={{ uri: 'https://...' }}
10
+ style={{ width: 100, height: 100 }}
11
+ loading // show loading indicator
12
+ accessibilityLabel="profile"
13
+ />
14
+
15
+ // With children overlay (e.g., badge, gradient)
16
+ <Image source={{ uri: 'https://...' }} style={{ width: 100, height: 100 }}>
17
+ <Badge label="New" />
18
+ </Image>
19
+ ```
20
+
21
+ ## Compose
22
+
23
+ ```kotlin
24
+ import vn.momo.kits.components.Image
25
+ import vn.momo.kits.components.Options
26
+ import androidx.compose.ui.graphics.ContentScale
27
+ import androidx.compose.ui.Alignment
28
+
29
+ Image(
30
+ source = "https://...", // Any: URL string, drawable, Painter
31
+ modifier = Modifier.fillMaxWidth().aspectRatio(16f/9f),
32
+ loading = true, // show skeleton while loading; default: true
33
+ options = Options( // optional
34
+ alignment = Alignment.Center,
35
+ contentScale = ContentScale.Crop,
36
+ colorFilter = null,
37
+ alpha = 1f,
38
+ ),
39
+ )
40
+
41
+ // Painter overload (no loading/error state)
42
+ Image(source = painterResource("drawable/ic_avatar"))
43
+ ```
44
+
45
+ ### Options
46
+
47
+ | Param | Type | Default |
48
+ |-------|------|---------|
49
+ | `alignment` | `Alignment` | `Alignment.TopStart` |
50
+ | `contentScale` | `ContentScale` | `ContentScale.Crop` |
51
+ | `colorFilter` | `ColorFilter?` | `null` |
52
+ | `alpha` | `Float` | `1f` |
53
+
54
+ ## Key Differences
55
+
56
+ | Feature | React Native | Compose |
57
+ |---------|-------------|---------|
58
+ | Source | `{{ uri: 'url' }}` (object) | `Any` (string, drawable, Painter) |
59
+ | Sizing | `style={{ width, height }}` | `Modifier.width().height()` |
60
+ | Loading | `loading` prop | `loading` param |
61
+ | Children overlay | RN: yes (JSX children) | Compose: use `Box` + `Image` separately |
62
+ | Auto resize | — | Auto-appends `?size=XXS…XXL` for supported CDN domains |
@@ -0,0 +1,61 @@
1
+ # Information
2
+
3
+ ## React Native
4
+
5
+ ```tsx
6
+ import { Information } from '@momo-kits/information';
7
+
8
+ <Information
9
+ title="Note" // optional title text
10
+ description="Important info" // required description text
11
+ type="info" // 'default'|'warning'|'error'|'success' (default: 'default')
12
+ image="https://..." // optional image URL (replaces the icon)
13
+ CTA="Retry" // optional CTA button text
14
+ onPressCTA={() => {}} // CTA button pressed callback
15
+ showIcon={true} // show/hide leading icon (default: true)
16
+ showIconClose={true} // show/hide close icon (default: true)
17
+ onPressClose={() => {}} // close icon pressed callback
18
+ style={{}} // optional custom styles
19
+ accessibilityLabel="note_block" // optional accessibility label
20
+ />
21
+ ```
22
+
23
+ Package: `@momo-kits/information` (separate lib).
24
+
25
+ ## Compose
26
+
27
+ ```kotlin
28
+ import vn.momo.kits.components.Information
29
+ import vn.momo.kits.components.InformationState
30
+
31
+ Information(
32
+ modifier = Modifier, // optional modifier
33
+ title = "Note", // optional title text
34
+ description = "Important info", // description text (default: "Description")
35
+ state = InformationState.DEFAULT, // DEFAULT | WARNING | ERROR (default: DEFAULT)
36
+ image = "https://...", // optional image URL (replaces the icon)
37
+ onPressAction = {}, // CTA button pressed callback
38
+ showIcon = true, // show/hide leading icon (default: true)
39
+ action = "Retry", // optional CTA button text
40
+ showIconClose = true, // show/hide close icon (default: true)
41
+ onPressClose = {}, // close icon pressed callback
42
+ )
43
+ ```
44
+
45
+ ### TrustBanner (Compose only)
46
+
47
+ ```kotlin
48
+ import vn.momo.kits.components.TrustBanner
49
+
50
+ TrustBanner(data = trustBannerData)
51
+ ```
52
+
53
+ ## Key Differences
54
+
55
+ | Feature | React Native | Compose |
56
+ |---------|-------------|---------|
57
+ | Package | `@momo-kits/information` | `vn.momo.kits.components` |
58
+ | State type | String (`type`) | Enum (`InformationState`) |
59
+ | CTA prop | `CTA` + `onPressCTA` | `action` + `onPressAction` |
60
+ | Style/Modifier | `style` prop | `modifier` param |
61
+ | Accessibility | `accessibilityLabel` prop | Not available |
@@ -0,0 +1,92 @@
1
+ # InputDropDown Reference
2
+
3
+ Non-editable dropdown trigger input. Displays a value and opens a selection UI on press.
4
+
5
+ ## React Native
6
+
7
+ ```tsx
8
+ import { InputDropDown } from '@momo-kits/foundation';
9
+
10
+ <InputDropDown
11
+ floatingValue="Select Province"
12
+ floatingIcon="info_small"
13
+ floatingIconColor={theme.colors.text.hint}
14
+ onPressFloatingIcon={() => {}}
15
+ value={selectedProvince}
16
+ placeholder="Choose..."
17
+ size="large"
18
+ onPress={() => openProvinceSelector()}
19
+ leadingIcon="24_location"
20
+ leadingIconColor={theme.colors.text.hint}
21
+ onPressLeadingIcon={() => {}}
22
+ errorMessage=""
23
+ hintText=""
24
+ required={true}
25
+ disabled={false}
26
+ loading={false}
27
+ multiline={false}
28
+ params={{ field: 'province' }}
29
+ style={{}}
30
+ accessibilityLabel="province_selector"
31
+ />
32
+ ```
33
+
34
+ ### Props
35
+
36
+ Extends `TouchableOpacityProps` — triggers `onPress` when tapped.
37
+
38
+ | Prop | Type | Default | Description |
39
+ |------|------|---------|-------------|
40
+ | `size` | `'small' \| 'large'` | `'large'` | Input size variant |
41
+ | `value` | `string` | — | Display value |
42
+ | `placeholder` | `string` | — | Placeholder when empty |
43
+ | `multiline` | `boolean` | `false` | Allow multi-line display |
44
+ | `floatingValue` | `string` | — | Floating label text |
45
+ | `floatingIcon` | `string` | — | Icon shown beside floating label |
46
+ | `floatingIconColor` | `string` | — | Color of floating icon |
47
+ | `onPressFloatingIcon` | `() => void` | — | Press handler for floating icon |
48
+ | `leadingIcon` | `string` | — | Leading icon name |
49
+ | `leadingIconColor` | `string` | — | Leading icon color |
50
+ | `onPressLeadingIcon` | `() => void` | — | Leading icon press handler |
51
+ | `errorMessage` | `string` | — | Error message below input |
52
+ | `errorSpacing` | `boolean` | `false` | Reserve space for error |
53
+ | `hintText` | `string` | — | Hint text below input |
54
+ | `required` | `boolean` | `false` | Show required indicator |
55
+ | `disabled` | `boolean` | `false` | Disable input |
56
+ | `loading` | `boolean` | `false` | Show loading indicator |
57
+ | `params` | `any` | — | Auto tracking params |
58
+ | `style` | `ViewStyle` | — | Custom wrapper style |
59
+ | `accessibilityLabel` | `string` | — | Accessibility label |
60
+
61
+ ## Compose
62
+
63
+ ```kotlin
64
+ import vn.momo.kits.components.InputDropDown
65
+ import vn.momo.kits.components.InputSize
66
+
67
+ val selectedValue = remember { mutableStateOf("") }
68
+
69
+ InputDropDown(
70
+ value = selectedValue,
71
+ floatingValue = "Select Option",
72
+ floatingValueColor = AppTheme.current.colors.text.hint,
73
+ floatingIcon = "",
74
+ floatingIconColor = AppTheme.current.colors.text.default,
75
+ placeholder = "Choose...",
76
+ size = InputSize.SMALL,
77
+ onPress = { openSelector() },
78
+ hintText = "",
79
+ error = "",
80
+ errorSpacing = false,
81
+ disabled = false,
82
+ loading = false,
83
+ required = false,
84
+ icon = "arrow_chevron_down_small",
85
+ iconColor = AppTheme.current.colors.text.default,
86
+ onRightIconPressed = { },
87
+ leadingIcon = "",
88
+ leadingIconColor = AppTheme.current.colors.text.hint,
89
+ )
90
+ ```
91
+
92
+ > **Note:** Compose uses `MutableState<String>` for `value` and `error` (String, not `errorMessage`). The default trailing icon is `"arrow_chevron_down_small"`.