@momo-kits/native-kits 0.0.1-beta.4 → 0.89.1-2

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 (195) hide show
  1. package/README.md +1 -0
  2. package/android/.gradle/8.0/checksums/checksums.lock +0 -0
  3. package/android/.gradle/8.0/dependencies-accessors/dependencies-accessors.lock +0 -0
  4. package/android/.gradle/8.0/dependencies-accessors/gc.properties +0 -0
  5. package/android/.gradle/8.0/fileChanges/last-build.bin +0 -0
  6. package/android/.gradle/8.0/fileHashes/fileHashes.lock +0 -0
  7. package/android/.gradle/8.0/gc.properties +0 -0
  8. package/android/.gradle/config.properties +2 -0
  9. package/android/.gradle/vcs-1/gc.properties +0 -0
  10. package/android/.idea/gradle.xml +12 -0
  11. package/android/.idea/migrations.xml +10 -0
  12. package/android/.idea/misc.xml +10 -0
  13. package/android/.idea/vcs.xml +6 -0
  14. package/android/.idea/workspace.xml +50 -0
  15. package/android/build.gradle +35 -69
  16. package/android/local.properties +8 -0
  17. package/android/proguard-rules.pro +21 -0
  18. package/android/src/main/AndroidManifest.xml +2 -2
  19. package/android/src/main/java/com/momoplatform/nativekits/foundations/Button.kt +16 -0
  20. package/android/src/main/java/com/momoplatform/nativekits/libs/Logo.kt +63 -0
  21. package/android/src/main/java/com/momoplatform/nativekits/libs/TrustBanner.kt +246 -0
  22. package/android/src/main/res/drawable/ic_launcher_background.xml +170 -0
  23. package/android/src/main/res/drawable-v24/ic_launcher_foreground.xml +30 -0
  24. package/android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +6 -0
  25. package/android/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +6 -0
  26. package/android/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
  27. package/android/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
  28. package/android/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
  29. package/android/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
  30. package/android/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
  31. package/android/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
  32. package/android/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
  33. package/android/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
  34. package/android/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
  35. package/android/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
  36. package/android/src/main/res/values/colors.xml +10 -0
  37. package/android/src/main/res/values/strings.xml +3 -0
  38. package/android/src/main/res/values/themes.xml +3 -0
  39. package/android/src/main/res/values-night/themes.xml +3 -0
  40. package/android/src/main/res/xml/backup_rules.xml +13 -0
  41. package/android/src/main/res/xml/data_extraction_rules.xml +19 -0
  42. package/build.gradle.kts +18 -0
  43. package/compose/build.gradle.kts +82 -0
  44. package/compose/src/androidMain/AndroidManifest.xml +2 -0
  45. package/compose/src/androidMain/kotlin/vn/momo/kits/utils/Platform.kt +3 -0
  46. package/compose/src/androidMain/kotlin/vn/momo/kits/utils/SetMaskFilter.kt +8 -0
  47. package/compose/src/androidMain/kotlin/vn/momo/kits/utils/Utils.android.kt +14 -0
  48. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Components.kt +194 -0
  49. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +197 -0
  50. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +133 -0
  51. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +62 -0
  52. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +27 -0
  53. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +288 -0
  54. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +80 -0
  55. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +23 -0
  56. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +42 -0
  57. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +126 -0
  58. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +51 -0
  59. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +299 -0
  60. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +246 -0
  61. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +223 -0
  62. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +244 -0
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +281 -0
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PromotionPopup.kt +72 -0
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +65 -0
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +64 -0
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +63 -0
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +73 -0
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +42 -0
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +150 -0
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +12 -0
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +13 -0
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +173 -0
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +242 -0
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +2 -0
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +2 -0
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +2 -0
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +50 -0
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +1321 -0
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Platform.kt +3 -0
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/SetMaskFilter.kt +5 -0
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +97 -0
  83. package/compose/src/iosMain/kotlin/vn/momo/kits/utils/Platform.kt +3 -0
  84. package/compose/src/iosMain/kotlin/vn/momo/kits/utils/SetMaskFilter.kt +9 -0
  85. package/compose/src/iosMain/kotlin/vn/momo/kits/utils/Utils.ios.kt +18 -0
  86. package/gradle.properties +19 -0
  87. package/gradlew +240 -0
  88. package/gradlew.bat +91 -0
  89. package/ios/Button/Button.swift +9 -2
  90. package/ios/CalculatorKeyboard/CalculatorKeyboard.swift +126 -0
  91. package/ios/Checkbox/Checkbox.swift +38 -0
  92. package/ios/{Colors+Spacing → Colors+Radius+Spacing}/Colors.swift +21 -19
  93. package/ios/Colors+Radius+Spacing/Radius.swift +22 -0
  94. package/ios/Image/Image.swift +60 -0
  95. package/ios/Input/Input.swift +88 -37
  96. package/ios/OTPKeyboard/KeyboardButton.swift +12 -4
  97. package/ios/OTPKeyboard/OTPKeyboard.swift +1 -1
  98. package/ios/Popup/PopupDisplay.swift +169 -0
  99. package/ios/Popup/PopupInput.swift +96 -0
  100. package/ios/Popup/PopupPromotion.swift +52 -0
  101. package/ios/PopupView/FullscreenPopup.swift +251 -0
  102. package/ios/{Popup → PopupView}/Modifiers.swift +6 -20
  103. package/ios/{Popup → PopupView}/PopupView.swift +38 -146
  104. package/ios/PopupView/Utils++.swift +281 -0
  105. package/ios/ScrollIndicator/ScrollIndicator.swift +79 -0
  106. package/ios/Switch/Switch.swift +44 -0
  107. package/ios/Template/Logo/Logo.swift +75 -0
  108. package/ios/Template/TrustBanner/TrustBanner.swift +189 -0
  109. package/ios/native-kits.podspec +2 -0
  110. package/local.properties +8 -0
  111. package/package.json +6 -6
  112. package/publish.sh +1 -10
  113. package/settings.gradle.kts +41 -0
  114. package/android/gradle.properties +0 -5
  115. package/android/src/main/java/com/momoplatform/nativekits/NativeKitsPackage.kt +0 -17
  116. package/android/src/main/java/com/momoplatform/nativekits/NativeKitsViewManager.kt +0 -20
  117. package/example/ios/Example/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -63
  118. package/example/ios/Example/Assets.xcassets/Background.colorset/Contents.json +0 -38
  119. package/example/ios/Example/Assets.xcassets/Border.colorset/Contents.json +0 -38
  120. package/example/ios/Example/Assets.xcassets/Card.colorset/Contents.json +0 -38
  121. package/example/ios/Example/Assets.xcassets/Contents.json +0 -6
  122. package/example/ios/Example/Assets.xcassets/Error.colorset/Contents.json +0 -38
  123. package/example/ios/Example/Assets.xcassets/Primary.colorset/Contents.json +0 -38
  124. package/example/ios/Example/Assets.xcassets/PrimaryDark.colorset/Contents.json +0 -38
  125. package/example/ios/Example/Assets.xcassets/PrimaryLight.colorset/Contents.json +0 -38
  126. package/example/ios/Example/Assets.xcassets/Secondary.colorset/Contents.json +0 -38
  127. package/example/ios/Example/Assets.xcassets/Success.colorset/Contents.json +0 -38
  128. package/example/ios/Example/Assets.xcassets/Text.colorset/Contents.json +0 -38
  129. package/example/ios/Example/Assets.xcassets/TextSecondary.colorset/Contents.json +0 -38
  130. package/example/ios/Example/Assets.xcassets/Warning.colorset/Contents.json +0 -38
  131. package/example/ios/Example/ComponentDetail.swift +0 -35
  132. package/example/ios/Example/ComponentItem.swift +0 -24
  133. package/example/ios/Example/ComponentModel.swift +0 -33
  134. package/example/ios/Example/ContentView.swift +0 -53
  135. package/example/ios/Example/Example.entitlements +0 -10
  136. package/example/ios/Example/Foundation/ButtonDemo.swift +0 -80
  137. package/example/ios/Example/Foundation/Popup/ActionSheets.swift +0 -136
  138. package/example/ios/Example/Foundation/Popup/Floats.swift +0 -127
  139. package/example/ios/Example/Foundation/Popup/Popups.swift +0 -101
  140. package/example/ios/Example/Foundation/PopupDemo.swift +0 -366
  141. package/example/ios/Example/Foundation/TextInputDemo.swift +0 -31
  142. package/example/ios/Example/Foundation/TypographyDemo.swift +0 -53
  143. package/example/ios/Example/Foundation.swift +0 -26
  144. package/example/ios/Example/Info.plist +0 -18
  145. package/example/ios/Example/Library/SwipeableDemo.swift +0 -105
  146. package/example/ios/Example/Library.swift +0 -26
  147. package/example/ios/Example/Main.swift +0 -11
  148. package/example/ios/Example/Overview.swift +0 -20
  149. package/example/ios/Example/Preview Content/Preview Assets.xcassets/Contents.json +0 -6
  150. package/example/ios/Example/Resource/SFProText-Black.ttf +0 -0
  151. package/example/ios/Example/Resource/SFProText-Bold.ttf +0 -0
  152. package/example/ios/Example/Resource/SFProText-Heavy.ttf +0 -0
  153. package/example/ios/Example/Resource/SFProText-Light.ttf +0 -0
  154. package/example/ios/Example/Resource/SFProText-Medium.ttf +0 -0
  155. package/example/ios/Example/Resource/SFProText-Regular.ttf +0 -0
  156. package/example/ios/Example/Resource/SFProText-Semibold.ttf +0 -0
  157. package/example/ios/Example/Resource/SFProText-Thin.ttf +0 -0
  158. package/example/ios/Example/Resource/SFProText-Ultralight.ttf +0 -0
  159. package/example/ios/Example/Resource/foundation.json +0 -33
  160. package/example/ios/Example/Resource/library.json +0 -8
  161. package/example/ios/Example/Utils.swift +0 -30
  162. package/example/ios/Example/ViewModifier/DarkViewModifier.swift +0 -22
  163. package/example/ios/Example.xcodeproj/project.pbxproj +0 -570
  164. package/example/ios/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  165. package/example/ios/Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  166. package/example/ios/Example.xcodeproj/project.xcworkspace/xcuserdata/wem.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  167. package/example/ios/Example.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
  168. package/example/ios/Example.xcworkspace/contents.xcworkspacedata +0 -10
  169. package/example/ios/Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  170. package/example/ios/Example.xcworkspace/xcuserdata/wem.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  171. package/example/ios/Example.xcworkspace/xcuserdata/wem.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +0 -6
  172. package/example/ios/Podfile +0 -6
  173. package/example/ios/Podfile.lock +0 -16
  174. package/example/ios/Pods/Local Podspecs/MoMoUIKits.podspec.json +0 -29
  175. package/example/ios/Pods/Manifest.lock +0 -16
  176. package/example/ios/Pods/Pods.xcodeproj/project.pbxproj +0 -661
  177. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/MoMoUIKits.xcscheme +0 -58
  178. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/Pods-Example.xcscheme +0 -58
  179. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/wem.xcuserdatad/xcschemes/xcschememanagement.plist +0 -25
  180. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits-dummy.m +0 -5
  181. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits-prefix.pch +0 -12
  182. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits-umbrella.h +0 -16
  183. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits.debug.xcconfig +0 -12
  184. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits.modulemap +0 -6
  185. package/example/ios/Pods/Target Support Files/MoMoUIKits/MoMoUIKits.release.xcconfig +0 -12
  186. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.markdown +0 -3
  187. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.plist +0 -29
  188. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-dummy.m +0 -5
  189. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example-umbrella.h +0 -16
  190. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example.debug.xcconfig +0 -14
  191. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example.modulemap +0 -6
  192. package/example/ios/Pods/Target Support Files/Pods-Example/Pods-Example.release.xcconfig +0 -14
  193. package/ios/Colors+Spacing/Radius.swift +0 -11
  194. package/ios/Popup/Utils++.swift +0 -163
  195. /package/ios/{Colors+Spacing → Colors+Radius+Spacing}/Spacing.swift +0 -0
@@ -0,0 +1,64 @@
1
+ package vn.momo.kits.components
2
+
3
+ import androidx.compose.animation.core.LinearEasing
4
+ import androidx.compose.animation.core.RepeatMode
5
+ import androidx.compose.animation.core.animateFloat
6
+ import androidx.compose.animation.core.infiniteRepeatable
7
+ import androidx.compose.animation.core.rememberInfiniteTransition
8
+ import androidx.compose.animation.core.tween
9
+ import androidx.compose.foundation.background
10
+ import androidx.compose.foundation.layout.Box
11
+ import androidx.compose.foundation.layout.BoxWithConstraints
12
+ import androidx.compose.foundation.layout.fillMaxSize
13
+ import androidx.compose.runtime.Composable
14
+ import androidx.compose.ui.Modifier
15
+ import androidx.compose.ui.composed
16
+ import androidx.compose.ui.geometry.Offset
17
+ import androidx.compose.ui.graphics.Brush
18
+ import vn.momo.kits.const.Colors
19
+
20
+ @Composable
21
+ fun Skeleton(
22
+ ) {
23
+ BoxWithConstraints(modifier = Modifier.fillMaxSize()) {
24
+ Box(
25
+ modifier = Modifier.fillMaxSize()
26
+ .background(Colors.black_05)
27
+ .shimmerLoadingAnimation(maxWidth = maxWidth.value.toInt())
28
+ )
29
+ }
30
+ }
31
+
32
+ fun Modifier.shimmerLoadingAnimation(
33
+ maxWidth: Int,
34
+ angleOfAxisY: Float = 0f,
35
+ durationMillis: Int = 1000,
36
+ ): Modifier {
37
+ return composed {
38
+ val widthOfShadowBrush = maxWidth * 60 / 100
39
+ val shimmerColors = listOf(
40
+ Colors.black_05,
41
+ Colors.black_03,
42
+ Colors.black_05,
43
+ )
44
+ val transition = rememberInfiniteTransition(label = "")
45
+ val translateAnimation = transition.animateFloat(
46
+ initialValue = 0f,
47
+ targetValue = (durationMillis + widthOfShadowBrush).toFloat(),
48
+ animationSpec = infiniteRepeatable(
49
+ animation = tween(
50
+ durationMillis = durationMillis,
51
+ easing = LinearEasing,
52
+ ),
53
+ repeatMode = RepeatMode.Restart,
54
+ ),
55
+ )
56
+ this.background(
57
+ brush = Brush.linearGradient(
58
+ colors = shimmerColors,
59
+ start = Offset(x = translateAnimation.value - widthOfShadowBrush, y = 0.0f),
60
+ end = Offset(x = translateAnimation.value, y = angleOfAxisY),
61
+ ),
62
+ )
63
+ }
64
+ }
@@ -0,0 +1,63 @@
1
+ package vn.momo.kits.components
2
+
3
+ import androidx.compose.foundation.background
4
+ import androidx.compose.foundation.border
5
+ import androidx.compose.foundation.clickable
6
+ import androidx.compose.foundation.interaction.MutableInteractionSource
7
+ import androidx.compose.foundation.layout.Box
8
+ import androidx.compose.foundation.layout.height
9
+ import androidx.compose.foundation.layout.padding
10
+ import androidx.compose.foundation.layout.size
11
+ import androidx.compose.foundation.layout.width
12
+ import androidx.compose.foundation.shape.RoundedCornerShape
13
+ import androidx.compose.material.ripple.rememberRipple
14
+ import androidx.compose.runtime.Composable
15
+ import androidx.compose.runtime.remember
16
+ import androidx.compose.ui.Alignment
17
+ import androidx.compose.ui.Modifier
18
+ import androidx.compose.ui.draw.clip
19
+ import androidx.compose.ui.graphics.Color
20
+ import androidx.compose.ui.unit.dp
21
+ import vn.momo.kits.const.Colors
22
+ import vn.momo.kits.const.Spacing
23
+ import vn.momo.kits.utils.ifTrue
24
+
25
+ @Composable
26
+ fun Switch(
27
+ value: Boolean = false,
28
+ onChange: (Boolean) -> Unit = {},
29
+ disabled: Boolean = false,
30
+ ) {
31
+ val circleBackgroundColor = value.ifTrue(Colors.black_01, Colors.black_03)
32
+ var backgroundColor = value.ifTrue(Colors.green_03, Colors.black_07)
33
+ if (disabled) {
34
+ backgroundColor = value.ifTrue(Colors.green_09, Colors.black_05)
35
+ }
36
+
37
+ Box(
38
+ modifier = Modifier.then(
39
+ Modifier.width(38.dp).height(20.dp).border(
40
+ 0.dp, Color.Unspecified,
41
+ RoundedCornerShape(20.dp)
42
+ ).background(backgroundColor, RoundedCornerShape(20.dp)).clip(RoundedCornerShape(20.dp))
43
+ .clickable(
44
+ interactionSource = remember { MutableInteractionSource() },
45
+ indication = rememberRipple(),
46
+ enabled = !disabled,
47
+ onClick = { onChange(!value) }
48
+ )
49
+ .padding(horizontal = Spacing.XS)
50
+ ),
51
+ contentAlignment = value.ifTrue(Alignment.CenterEnd, Alignment.CenterStart)
52
+ ) {
53
+ Box(
54
+ modifier = Modifier.size(14.dp)
55
+ .border(0.dp, Color.Unspecified, RoundedCornerShape(percent = 100))
56
+ .background(circleBackgroundColor, RoundedCornerShape(percent = 100)),
57
+ contentAlignment = Alignment.Center
58
+ )
59
+ {
60
+ Box(Modifier.size(6.dp).background(backgroundColor, RoundedCornerShape(percent = 100)))
61
+ }
62
+ }
63
+ }
@@ -0,0 +1,73 @@
1
+ package vn.momo.kits.components
2
+
3
+ import androidx.compose.foundation.background
4
+ import androidx.compose.foundation.layout.Box
5
+ import androidx.compose.foundation.layout.Row
6
+ import androidx.compose.foundation.layout.height
7
+ import androidx.compose.foundation.layout.padding
8
+ import androidx.compose.foundation.shape.RoundedCornerShape
9
+ import androidx.compose.runtime.Composable
10
+ import androidx.compose.ui.Alignment
11
+ import androidx.compose.ui.Modifier
12
+ import androidx.compose.ui.graphics.Color
13
+ import androidx.compose.ui.unit.dp
14
+ import vn.momo.kits.const.Colors
15
+ import vn.momo.kits.const.Radius
16
+ import vn.momo.kits.const.Spacing
17
+ import vn.momo.kits.const.Typography
18
+ import vn.momo.kits.const.scaleSize
19
+ import vn.momo.kits.utils.primaryColors
20
+
21
+ enum class TagSize(val height: Float) {
22
+ Large(24.toFloat()),
23
+ Medium(18.toFloat())
24
+ }
25
+
26
+ enum class TagColor(val backgroundColor: Color, val textColor: Color) {
27
+ Default(Colors.black_04, Colors.black_17),
28
+ Orange(Colors.orange_08, Colors.orange_03),
29
+ Green(Colors.green_08, Colors.green_03),
30
+ Red(Colors.red_08, Colors.red_03),
31
+ Blue(Colors.blue_08, Colors.blue_03),
32
+ Grey(Colors.black_04, Colors.black_12),
33
+ }
34
+
35
+ @Composable
36
+ fun Tag(
37
+ label: String = "Label",
38
+ icon: String? = null,
39
+ color: TagColor = TagColor.Default,
40
+ size: TagSize = TagSize.Large,
41
+ customColor: Color? = null,
42
+ ) {
43
+ var tagColor = color.backgroundColor
44
+ var labelColor = color.textColor
45
+
46
+ if (primaryColors.contains(customColor)) {
47
+ tagColor = color.backgroundColor
48
+ labelColor = color.textColor
49
+ }
50
+
51
+ Box(
52
+ modifier = Modifier
53
+ .height(scaleSize(size.height).dp)
54
+ .background(tagColor, shape = RoundedCornerShape(Radius.S))
55
+ .padding(horizontal = Spacing.S),
56
+ contentAlignment = Alignment.Center
57
+ ) {
58
+ Row(verticalAlignment = Alignment.CenterVertically) {
59
+ if (icon != null) {
60
+ Icon(
61
+ source = icon,
62
+ size = 16.dp,
63
+ color = labelColor
64
+ )
65
+ }
66
+ Text(
67
+ text = label,
68
+ color = labelColor,
69
+ style = Typography.labelS
70
+ )
71
+ }
72
+ }
73
+ }
@@ -0,0 +1,42 @@
1
+ package vn.momo.kits.components
2
+
3
+ import androidx.compose.runtime.Composable
4
+ import androidx.compose.ui.Modifier
5
+ import androidx.compose.ui.graphics.Color
6
+ import androidx.compose.ui.text.TextLayoutResult
7
+ import androidx.compose.ui.text.TextStyle
8
+ import androidx.compose.ui.text.style.TextAlign
9
+ import androidx.compose.ui.text.style.TextDecoration
10
+ import androidx.compose.ui.unit.sp
11
+ import vn.momo.kits.const.AppTheme
12
+ import vn.momo.kits.const.Typography
13
+ import vn.momo.kits.const.getFontFamily
14
+ import vn.momo.kits.const.scaleSize
15
+
16
+ @Composable
17
+ fun Text(
18
+ text: String,
19
+ color: Color? = null,
20
+ style: TextStyle = Typography.paragraphDefault,
21
+ textAlign: TextAlign? = TextAlign.Start,
22
+ modifier: Modifier = Modifier,
23
+ maxLines: Int = Int.MAX_VALUE,
24
+ textDecoration: TextDecoration? = null,
25
+ onTextLayout: ((TextLayoutResult) -> Unit)? = null,
26
+ ) {
27
+ val fontSize = scaleSize(style.fontSize.value).sp
28
+ val fontFamily = getFontFamily("SFProText", style.fontWeight)
29
+
30
+ androidx.compose.material3.Text(
31
+ modifier = modifier,
32
+ text = text,
33
+ color = color ?: AppTheme.current.colors.text.default,
34
+ style = style,
35
+ textAlign = textAlign,
36
+ fontSize = fontSize,
37
+ fontFamily = fontFamily,
38
+ maxLines = maxLines,
39
+ textDecoration = textDecoration,
40
+ onTextLayout = onTextLayout,
41
+ )
42
+ }
@@ -0,0 +1,150 @@
1
+ package vn.momo.kits.const
2
+
3
+ import androidx.compose.ui.graphics.Color
4
+
5
+ object Colors {
6
+ val black_01 = Color(0xFFFFFFFF)
7
+ val black_02 = Color(0xFFF9F9F9)
8
+ val black_03 = Color(0xFFF0F0F0)
9
+ val black_04 = Color(0xFFE8E8E8)
10
+ val black_05 = Color(0xFFE5E5E5)
11
+ val black_06 = Color(0xFFD8D8D8)
12
+ val black_07 = Color(0xFFCCCCCC)
13
+ val black_08 = Color(0xFFC6C6C6)
14
+ val black_09 = Color(0xFFB9B9B9)
15
+ val black_10 = Color(0xFFA0A0A0)
16
+ val black_11 = Color(0xFF878787)
17
+ val black_12 = Color(0xFF727272)
18
+ val black_13 = Color(0xFF646464)
19
+ val black_14 = Color(0xFF565656)
20
+ val black_15 = Color(0xFF484848)
21
+ val black_16 = Color(0xFF404040)
22
+ val black_17 = Color(0xFF303233)
23
+ val black_18 = Color(0xFF242424)
24
+ val black_19 = Color(0xFF18191A)
25
+ val black_20 = Color(0xFF000000)
26
+ val pink_01 = Color(0xFFBC2678)
27
+ val pink_02 = Color(0xFFD42A87)
28
+ val pink_03 = Color(0xFFEB2F96)
29
+ val pink_04 = Color(0xFFED43A0)
30
+ val pink_05 = Color(0xFFEF59AB)
31
+ val pink_06 = Color(0xFFF382C0)
32
+ val pink_07 = Color(0xFFF7ACD5)
33
+ val pink_08 = Color(0xFFFBD5EA)
34
+ val pink_09 = Color(0xFFFDEAF4)
35
+ val pink_10 = Color(0xFEF4FA)
36
+ val pink_11 = Color(0xFFFEF8FC)
37
+ val pink_MoMo_Branding = Color(0xFFA50064)
38
+ val violet_01 = Color(0xFF7822C0)
39
+ val violet_02 = Color(0xFF8726D8)
40
+ val violet_03 = Color(0xFF962AF0)
41
+ val violet_04 = Color(0xFFA03FF1)
42
+ val violet_05 = Color(0xFFAB55F3)
43
+ val violet_06 = Color(0xFFC07FF6)
44
+ val violet_07 = Color(0xFFD5AAF9)
45
+ val violet_08 = Color(0xFFEAD4FC)
46
+ val violet_09 = Color(0xFFF4E9FD)
47
+ val violet_10 = Color(0xFFFAF4FE)
48
+ val violet_11 = Color(0xFFFCF8FE)
49
+ val violet_11_stroke = Color(0xFFDFE1E5)
50
+ val indigo_01 = Color(0xFF3E3CCC)
51
+ val indigo_02 = Color(0xFF4644E6)
52
+ val indigo_03 = Color(0xFF4E4BFF)
53
+ val indigo_04 = Color(0xFF5F5DFF)
54
+ val indigo_05 = Color(0xFF716FFF)
55
+ val indigo_06 = Color(0xFF9593FF)
56
+ val indigo_07 = Color(0xFFB8B7FF)
57
+ val indigo_08 = Color(0xFFDCDBFF)
58
+ val indigo_09 = Color(0xFFEDEDFF)
59
+ val indigo_10 = Color(0xFFF6F6FF)
60
+ val indigo_11 = Color(0xFFF9F9FF)
61
+ val blue_01 = Color(0xFF0062CC)
62
+ val blue_02 = Color(0xFF006EE6)
63
+ val blue_03 = Color(0xFF007AFF)
64
+ val blue_04 = Color(0xFF1987FF)
65
+ val blue_05 = Color(0xFF3395FF)
66
+ val blue_06 = Color(0xFF66AFFF)
67
+ val blue_07 = Color(0xFF99CAFF)
68
+ val blue_08 = Color(0xFFCCE4FF)
69
+ val blue_09 = Color(0xFFE5F1FF)
70
+ val blue_10 = Color(0xFFF2F8FF)
71
+ val blue_11 = Color(0xFFF7FBFF)
72
+ val mint_01 = Color(0xFF0F9B9B)
73
+ val mint_02 = Color(0xFF11AFAF)
74
+ val mint_03 = Color(0xFF13C2C2)
75
+ val mint_04 = Color(0xFF2AC8C8)
76
+ val mint_05 = Color(0xFF42CECE)
77
+ val mint_06 = Color(0xFF71DADA)
78
+ val mint_07 = Color(0xFFA1E7E7)
79
+ val mint_08 = Color(0xFFD0F3F3)
80
+ val mint_09 = Color(0xFFE7F8F8)
81
+ val mint_10 = Color(0xFFF3FCFC)
82
+ val mint_11 = Color(0xFFF8FDFD)
83
+ val green_01 = Color(0xFF2A9F47)
84
+ val green_02 = Color(0xFF2FB350)
85
+ val green_03 = Color(0xFF34C759)
86
+ val green_04 = Color(0xFF48CC69)
87
+ val green_05 = Color(0xFF5DD27A)
88
+ val green_06 = Color(0xFF85DD9B)
89
+ val green_07 = Color(0xFFAEE9BD)
90
+ val green_08 = Color(0xFFD6F4DE)
91
+ val green_09 = Color(0xFFEAF9EE)
92
+ val green_10 = Color(0xFFF5FCF6)
93
+ val green_11 = Color(0xFFF9FDFA)
94
+ val lime_01 = Color(0xFF80AE0E)
95
+ val lime_02 = Color(0xFF90C30F)
96
+ val lime_03 = Color(0xFFA0D911)
97
+ val lime_04 = Color(0xFFA9DC28)
98
+ val lime_05 = Color(0xFFB3E141)
99
+ val lime_06 = Color(0xFFC6E870)
100
+ val lime_07 = Color(0xFFD9F0A0)
101
+ val lime_08 = Color(0xFFECF7CF)
102
+ val lime_09 = Color(0xFFF5FBE7)
103
+ val lime_10 = Color(0xFFFAFDF3)
104
+ val lime_11 = Color(0xFFFCFEF8)
105
+ val yellow_01 = Color(0xFFCCA300)
106
+ val yellow_02 = Color(0xFFE6B800)
107
+ val yellow_03 = Color(0xFFFFCC00)
108
+ val yellow_04 = Color(0xFFFFD119)
109
+ val yellow_05 = Color(0xFFFFD633)
110
+ val yellow_06 = Color(0xFFFFE066)
111
+ val yellow_07 = Color(0xFFFFEB99)
112
+ val yellow_08 = Color(0xFFFFF5CC)
113
+ val yellow_09 = Color(0xFFFFF9E5)
114
+ val yellow_10 = Color(0xFFFFFCF2)
115
+ val yellow_11 = Color(0xFFFFFDF7)
116
+ val gold_01 = Color(0xFFC87012)
117
+ val gold_02 = Color(0xFFE17E14)
118
+ val gold_03 = Color(0xFFFA8C16)
119
+ val gold_04 = Color(0xFFFA972D)
120
+ val gold_05 = Color(0xFFFBA345)
121
+ val gold_06 = Color(0xFFFCBA73)
122
+ val gold_07 = Color(0xFFFDD1A2)
123
+ val gold_08 = Color(0xFFFEE8D0)
124
+ val gold_09 = Color(0xFFFEF3E7)
125
+ val gold_10 = Color(0xFFFFF9F3)
126
+ val gold_11 = Color(0xFFFEFBF8)
127
+ val orange_01 = Color(0xFFC84316)
128
+ val orange_02 = Color(0xFFE14C19)
129
+ val orange_03 = Color(0xFFFA541C)
130
+ val orange_04 = Color(0xFFFA6532)
131
+ val orange_05 = Color(0xFFFB7649)
132
+ val orange_06 = Color(0xFFFC9877)
133
+ val orange_07 = Color(0xFFFDBBA4)
134
+ val orange_08 = Color(0xFFFEDDD2)
135
+ val orange_09 = Color(0xFFFEEDe8)
136
+ val orange_10 = Color(0xFFFFF6F3)
137
+ val orange_11 = Color(0xFFFEFAF8)
138
+ val red_01 = Color(0xFFC41B24)
139
+ val red_02 = Color(0xFFDD1F29)
140
+ val red_03 = Color(0xFFF5222D)
141
+ val red_04 = Color(0xFFF63842)
142
+ val red_05 = Color(0xFFF74E57)
143
+ val red_06 = Color(0xFFF97A81)
144
+ val red_07 = Color(0xFFFBA7AB)
145
+ val red_08 = Color(0xFFFDD3D5)
146
+ val red_09 = Color(0xFFFEe8EA)
147
+ val red_10 = Color(0xFFFEF4F4)
148
+ val red_11 = Color(0xFFFEF8F8)
149
+ }
150
+
@@ -0,0 +1,12 @@
1
+ package vn.momo.kits.const
2
+
3
+ import androidx.compose.ui.unit.dp
4
+
5
+ object Radius {
6
+ val XXS = 2.dp
7
+ val XS = 4.dp
8
+ val S = 8.dp
9
+ val M = 12.dp
10
+ val L = 16.dp
11
+ val XL = 24.dp
12
+ }
@@ -0,0 +1,13 @@
1
+ package vn.momo.kits.const
2
+
3
+ import androidx.compose.ui.unit.dp
4
+
5
+ object Spacing {
6
+ val XXS = 2.dp
7
+ val XS = 4.dp
8
+ val S = 8.dp
9
+ val M = 12.dp
10
+ val L = 16.dp
11
+ val XL = 24.dp
12
+ val XXL = 32.dp
13
+ }
@@ -0,0 +1,173 @@
1
+ package vn.momo.kits.const
2
+
3
+ import androidx.compose.runtime.staticCompositionLocalOf
4
+ import androidx.compose.ui.graphics.Color
5
+ import androidx.compose.ui.unit.dp
6
+
7
+ data class Background(
8
+ val default: Color,
9
+ val surface: Color,
10
+ val tonal: Color,
11
+ val pressed: Color,
12
+ val selected: Color,
13
+ val disable: Color
14
+ )
15
+
16
+ data class ColorScheme(
17
+ val primary: Color,
18
+ val secondary: Color,
19
+ val background: Background,
20
+ val text: TextColors,
21
+ val border: BorderColors,
22
+ val success: ColorSet,
23
+ val warning: ColorSet,
24
+ val error: ColorSet,
25
+ val highlight: ColorSet,
26
+ val interactive: ColorSet
27
+ )
28
+
29
+ data class TextColors(
30
+ val default: Color,
31
+ val secondary: Color,
32
+ val hint: Color,
33
+ val disable: Color
34
+ )
35
+
36
+ data class BorderColors(
37
+ val default: Color,
38
+ val disable: Color
39
+ )
40
+
41
+ data class ColorSet(
42
+ val primary: Color,
43
+ val secondary: Color,
44
+ val container: Color
45
+ )
46
+
47
+ data class ThemeAssets(
48
+ val headerBackground: String? = null
49
+ )
50
+
51
+ data class Theme(
52
+ val dark: Boolean,
53
+ val colors: ColorScheme,
54
+ val font: String,
55
+ val assets: ThemeAssets
56
+ )
57
+
58
+ val defaultTheme = Theme(
59
+ dark = false,
60
+ colors = ColorScheme(
61
+ primary = Colors.pink_03,
62
+ secondary = Colors.pink_07,
63
+ background = Background(
64
+ default = Color(0xFFF2F2F6),
65
+ surface = Colors.black_01,
66
+ tonal = Colors.pink_08,
67
+ pressed = Color(0xFFDFDFE6),
68
+ selected = Colors.pink_10,
69
+ disable = Color(0xFFEBEBF2)
70
+ ),
71
+ text = TextColors(
72
+ default = Colors.black_17,
73
+ secondary = Colors.black_15,
74
+ hint = Colors.black_12,
75
+ disable = Colors.black_08
76
+ ),
77
+ border = BorderColors(
78
+ default = Colors.black_04,
79
+ disable = Colors.black_03
80
+ ),
81
+ success = ColorSet(
82
+ primary = Colors.green_03,
83
+ secondary = Colors.green_07,
84
+ container = Colors.green_08
85
+ ),
86
+ warning = ColorSet(
87
+ primary = Colors.orange_03,
88
+ secondary = Colors.orange_07,
89
+ container = Colors.orange_08
90
+ ),
91
+ error = ColorSet(
92
+ primary = Colors.red_03,
93
+ secondary = Colors.red_07,
94
+ container = Colors.red_08,
95
+ ),
96
+ highlight = ColorSet(
97
+ primary = Colors.mint_03,
98
+ secondary = Colors.mint_07,
99
+ container = Colors.mint_08
100
+ ),
101
+ interactive = ColorSet(
102
+ primary = Colors.blue_03,
103
+ secondary = Colors.blue_07,
104
+ container = Colors.blue_08
105
+ )
106
+ ),
107
+ font = "SFProText",
108
+ assets = ThemeAssets(
109
+ headerBackground = "https://static.momocdn.net/app/img/app/img/header-background.png"
110
+ )
111
+ )
112
+
113
+
114
+ val darkTheme = Theme(
115
+ dark = true,
116
+ colors = ColorScheme(
117
+ primary = Colors.pink_04,
118
+ secondary = Colors.pink_08,
119
+ background = Background(
120
+ default = Color(0xFF121212),
121
+ surface = Color(0xFF1E1E1E),
122
+ tonal = Colors.pink_08,
123
+ pressed = Color(0xFF1A1A1A),
124
+ selected = Colors.pink_11,
125
+ disable = Color(0xFF303030)
126
+ ),
127
+ text = TextColors(
128
+ default = Color.White,
129
+ secondary = Color(0xFFB0B0B0),
130
+ hint = Color(0xFF727272),
131
+ disable = Color(0xFF505050)
132
+ ),
133
+ border = BorderColors(
134
+ default = Color(0xFF2A2A2A),
135
+ disable = Color(0xFF242424)
136
+ ),
137
+ success = ColorSet(
138
+ primary = Colors.green_03,
139
+ secondary = Colors.green_07,
140
+ container = Colors.green_08
141
+ ),
142
+ warning = ColorSet(
143
+ primary = Colors.orange_03,
144
+ secondary = Colors.orange_07,
145
+ container = Colors.orange_08
146
+ ),
147
+ error = ColorSet(
148
+ primary = Colors.red_03,
149
+ secondary = Colors.red_07,
150
+ container = Colors.red_08,
151
+ ),
152
+ highlight = ColorSet(
153
+ primary = Colors.mint_03,
154
+ secondary = Colors.mint_07,
155
+ container = Colors.mint_08
156
+ ),
157
+ interactive = ColorSet(
158
+ primary = Colors.blue_03,
159
+ secondary = Colors.blue_07,
160
+ container = Colors.blue_08
161
+ )
162
+ ),
163
+ font = "SFProText",
164
+ assets = ThemeAssets(
165
+ headerBackground = "https://static.momocdn.net/app/img/app/img/header-background.png"
166
+ )
167
+ )
168
+
169
+
170
+ val AppTheme = staticCompositionLocalOf { defaultTheme }
171
+ val AppStatusBar = staticCompositionLocalOf {
172
+ 0.dp
173
+ }