@momo-kits/native-kits 0.167.1-beta.19-debug → 0.167.1-beta.20

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 (144) hide show
  1. package/ios/native-kits.podspec +1 -1
  2. package/ios-demo/MoMoUIKitsDemo.podspec +1 -1
  3. package/package.json +1 -1
  4. package/build.gradle.kts +0 -11
  5. package/compose/build.gradle.kts +0 -203
  6. package/compose/build.gradle.kts.backup +0 -203
  7. package/compose/compose.podspec +0 -47
  8. package/compose/src/androidMain/kotlin/vn/momo/kits/const/HostFont.android.kt +0 -19
  9. package/compose/src/androidMain/kotlin/vn/momo/kits/navigation/ScrollToTop.android.kt +0 -6
  10. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/BackGesture.android.kt +0 -12
  11. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/OsFontScale.android.kt +0 -7
  12. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +0 -151
  13. package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +0 -52
  14. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +0 -124
  15. package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +0 -183
  16. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +0 -207
  17. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +0 -39
  18. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +0 -86
  19. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +0 -76
  20. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +0 -76
  21. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +0 -293
  22. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +0 -33
  23. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +0 -831
  24. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Localize.kt +0 -269
  25. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +0 -110
  26. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +0 -378
  27. package/compose/src/commonMain/kotlin/vn/momo/kits/application/WidgetContainer.kt +0 -56
  28. package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +0 -69
  29. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Avatar.kt +0 -157
  30. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +0 -82
  31. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +0 -32
  32. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +0 -338
  33. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BaselineView.kt +0 -175
  34. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +0 -356
  35. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Carousel.kt +0 -113
  36. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +0 -89
  37. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +0 -128
  38. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Collapse.kt +0 -209
  39. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +0 -542
  40. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +0 -49
  41. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +0 -86
  42. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +0 -125
  43. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +0 -231
  44. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +0 -189
  45. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +0 -475
  46. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +0 -114
  47. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +0 -266
  48. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +0 -240
  49. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +0 -223
  50. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +0 -264
  51. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +0 -185
  52. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +0 -343
  53. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Loader.kt +0 -108
  54. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +0 -56
  55. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +0 -41
  56. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +0 -84
  57. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +0 -40
  58. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +0 -328
  59. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +0 -97
  60. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ProgressInfo.kt +0 -310
  61. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +0 -59
  62. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Rating.kt +0 -87
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +0 -21
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +0 -90
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Slider.kt +0 -323
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +0 -220
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Steps.kt +0 -473
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/components/SuggestAction.kt +0 -122
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Swipe.kt +0 -199
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +0 -91
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +0 -552
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +0 -88
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +0 -125
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +0 -207
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +0 -498
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +0 -176
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Uploader.kt +0 -182
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +0 -193
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +0 -29
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +0 -234
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +0 -188
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +0 -325
  83. package/compose/src/commonMain/kotlin/vn/momo/kits/const/HostFont.kt +0 -16
  84. package/compose/src/commonMain/kotlin/vn/momo/kits/const/KitDesignSystem.kt +0 -18
  85. package/compose/src/commonMain/kotlin/vn/momo/kits/const/KitFontScale.kt +0 -22
  86. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +0 -12
  87. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +0 -16
  88. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +0 -194
  89. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +0 -282
  90. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +0 -54
  91. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +0 -51
  92. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +0 -41
  93. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +0 -52
  94. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +0 -66
  95. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +0 -11
  96. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +0 -104
  97. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +0 -48
  98. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +0 -51
  99. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +0 -299
  100. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/HostBackGestureBridge.kt +0 -58
  101. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +0 -129
  102. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +0 -106
  103. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +0 -201
  104. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +0 -393
  105. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ScrollToTop.kt +0 -8
  106. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +0 -595
  107. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackTransition.kt +0 -148
  108. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/SwipeBackHaptic.kt +0 -35
  109. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +0 -184
  110. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +0 -217
  111. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +0 -86
  112. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +0 -169
  113. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +0 -357
  114. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +0 -83
  115. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderJourney.kt +0 -106
  116. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderLocation.kt +0 -75
  117. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +0 -309
  118. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +0 -39
  119. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +0 -364
  120. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +0 -132
  121. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/tracking/ScreenTracker.kt +0 -127
  122. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/BackGesture.kt +0 -12
  123. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/ComposeLottieAnimation.kt +0 -91
  124. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/OsFontScale.kt +0 -9
  125. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +0 -71
  126. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +0 -1329
  127. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +0 -55
  128. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Tracking.kt +0 -15
  129. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +0 -105
  130. package/compose/src/iosMain/kotlin/vn/momo/kits/const/HostFont.ios.kt +0 -40
  131. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/HostBackGesture.ios.kt +0 -45
  132. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/ScrollToTop.ios.kt +0 -32
  133. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/BackGesture.ios.kt +0 -38
  134. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/OsFontScale.ios.kt +0 -66
  135. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +0 -213
  136. package/gradle/libs.versions.toml +0 -69
  137. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  138. package/gradle/wrapper/gradle-wrapper.properties +0 -8
  139. package/gradle.properties +0 -26
  140. package/gradlew +0 -252
  141. package/gradlew.bat +0 -94
  142. package/ios-demo/README.md +0 -120
  143. package/local.properties +0 -8
  144. package/settings.gradle.kts +0 -64
@@ -1,194 +0,0 @@
1
- package vn.momo.kits.const
2
-
3
- import androidx.compose.runtime.Stable
4
- import androidx.compose.runtime.staticCompositionLocalOf
5
- import androidx.compose.ui.graphics.Color
6
- import androidx.compose.ui.unit.dp
7
-
8
- @Stable
9
- data class Background(
10
- val default: Color,
11
- val surface: Color,
12
- val tonal: Color,
13
- val pressed: Color,
14
- val selected: Color,
15
- val disable: Color
16
- )
17
-
18
- @Stable
19
- data class ColorScheme(
20
- val primary: Color,
21
- val secondary: Color,
22
- val gradient: Color,
23
- val background: Background,
24
- val text: TextColors,
25
- val border: BorderColors,
26
- val success: ColorSet,
27
- val warning: ColorSet,
28
- val error: ColorSet,
29
- val highlight: ColorSet,
30
- val interactive: ColorSet
31
- )
32
-
33
- @Stable
34
- data class TextColors(
35
- val default: Color,
36
- val secondary: Color,
37
- val hint: Color,
38
- val disable: Color
39
- )
40
-
41
- @Stable
42
- data class BorderColors(
43
- val default: Color,
44
- val disable: Color
45
- )
46
-
47
- @Stable
48
- data class ColorSet(
49
- val primary: Color,
50
- val secondary: Color,
51
- val container: Color
52
- )
53
-
54
- @Stable
55
- data class ThemeAssets(
56
- val headerBackground: String? = null
57
- )
58
-
59
- @Stable
60
- data class Theme(
61
- val dark: Boolean,
62
- val colors: ColorScheme,
63
- val font: String,
64
- val assets: ThemeAssets
65
- ) {
66
- fun isHeaderImage(): Boolean {
67
- return !assets.headerBackground.isNullOrEmpty()
68
- }
69
- }
70
- private val lightBaseTheme = Theme(
71
- dark = false,
72
- colors = ColorScheme(
73
- primary = Colors.pink_03,
74
- secondary = Colors.pink_07,
75
- gradient = Color(0xFFFDCADE),
76
- background = Background(
77
- default = Color(0xFFF2F2F6),
78
- surface = Colors.black_01,
79
- tonal = Colors.pink_09,
80
- pressed = Color(0xFFDFDFE6),
81
- selected = Colors.pink_10,
82
- disable = Color(0xFFEBEBF2)
83
- ),
84
- text = TextColors(
85
- default = Colors.black_17,
86
- secondary = Colors.black_15,
87
- hint = Colors.black_12,
88
- disable = Colors.black_08
89
- ),
90
- border = BorderColors(
91
- default = Colors.black_04,
92
- disable = Colors.black_02
93
- ),
94
- success = ColorSet(
95
- primary = Colors.green_03,
96
- secondary = Colors.green_07,
97
- container = Colors.green_08
98
- ),
99
- warning = ColorSet(
100
- primary = Colors.orange_03,
101
- secondary = Colors.orange_07,
102
- container = Colors.orange_08
103
- ),
104
- error = ColorSet(
105
- primary = Colors.red_03,
106
- secondary = Colors.red_07,
107
- container = Colors.red_08,
108
- ),
109
- highlight = ColorSet(
110
- primary = Colors.mint_03,
111
- secondary = Colors.mint_07,
112
- container = Colors.mint_08
113
- ),
114
- interactive = ColorSet(
115
- primary = Colors.blue_03,
116
- secondary = Colors.blue_07,
117
- container = Colors.blue_08
118
- )
119
- ),
120
- font = "SFProText",
121
- assets = ThemeAssets(
122
- headerBackground = null
123
- )
124
- )
125
-
126
-
127
- private val darkBaseTheme = Theme(
128
- dark = true,
129
- colors = ColorScheme(
130
- primary = Colors.pink_04,
131
- secondary = Colors.pink_08,
132
- gradient = Color(0xFFFDCADE),
133
- background = Background(
134
- default = Color(0xFF121212),
135
- surface = Color(0xFF1E1E1E),
136
- tonal = Colors.pink_10,
137
- pressed = Color(0xFF1A1A1A),
138
- selected = Colors.pink_11,
139
- disable = Color(0xFF303030)
140
- ),
141
- text = TextColors(
142
- default = Color.White,
143
- secondary = Color(0xFFB0B0B0),
144
- hint = Color(0xFF727272),
145
- disable = Color(0xFF505050)
146
- ),
147
- border = BorderColors(
148
- default = Color(0xFF2A2A2A),
149
- disable = Color(0xFF242424)
150
- ),
151
- success = ColorSet(
152
- primary = Colors.green_03,
153
- secondary = Colors.green_07,
154
- container = Colors.green_08
155
- ),
156
- warning = ColorSet(
157
- primary = Colors.orange_03,
158
- secondary = Colors.orange_07,
159
- container = Colors.orange_08
160
- ),
161
- error = ColorSet(
162
- primary = Colors.red_03,
163
- secondary = Colors.red_07,
164
- container = Colors.red_08,
165
- ),
166
- highlight = ColorSet(
167
- primary = Colors.mint_03,
168
- secondary = Colors.mint_07,
169
- container = Colors.mint_08
170
- ),
171
- interactive = ColorSet(
172
- primary = Colors.blue_03,
173
- secondary = Colors.blue_07,
174
- container = Colors.blue_08
175
- )
176
- ),
177
- font = "SFProText",
178
- assets = ThemeAssets(
179
- headerBackground = null
180
- )
181
- )
182
-
183
-
184
- val defaultTheme: Theme
185
- get() = lightBaseTheme.copy(font = defaultFontFamily)
186
-
187
- val darkTheme: Theme
188
- get() = darkBaseTheme.copy(font = defaultFontFamily)
189
-
190
- val AppTheme = staticCompositionLocalOf { defaultTheme }
191
-
192
- val AppStatusBar = staticCompositionLocalOf { 0.dp }
193
-
194
- val AppNavigationBar = staticCompositionLocalOf { 0.dp }
@@ -1,282 +0,0 @@
1
- package vn.momo.kits.const
2
-
3
- import androidx.compose.runtime.Composable
4
- import androidx.compose.runtime.Immutable
5
- import androidx.compose.ui.platform.LocalDensity
6
- import androidx.compose.ui.text.TextStyle
7
- import androidx.compose.ui.text.font.FontFamily
8
- import androidx.compose.ui.text.font.FontWeight
9
- import androidx.compose.ui.text.style.TextDecoration
10
- import androidx.compose.ui.unit.*
11
- import vn.momo.kits.application.LocalContext
12
- import vn.momo.kits.platform.getScreenDimensions
13
- import kotlin.math.max
14
- import kotlin.math.min
15
-
16
- const val DEFAULT_SCREEN_SIZE = 375f
17
- const val MAX_FONT_SCALE = 1.5f
18
- const val MAX_DEVICE_SCALE = 5
19
-
20
- @Composable
21
- fun scaleSize(size: Float): Float {
22
- val context = LocalContext.current
23
- // Host-pushed context wins; otherwise fall back to the app-wide KitFontScale holder.
24
- val useOsScale = context?.useOSScaleRate ?: KitFontScale.useOSScaleRate
25
- if (!useOsScale) {
26
- return size * (context?.userScaleRate ?: KitFontScale.userScaleRate)
27
- }
28
- val scaleSizeMaxRate: Float = MAX_FONT_SCALE
29
- val deviceWidth = getScreenDimensions().width
30
- val deviceScale = deviceWidth / DEFAULT_SCREEN_SIZE
31
-
32
- val density = LocalDensity.current
33
- val fontScale = density.fontScale
34
-
35
- var fontSizeScaleDevice = size
36
- var fontSizeScaleOS = size
37
-
38
- if (deviceScale > 1) {
39
- fontSizeScaleDevice =
40
- min(deviceScale * fontSizeScaleDevice, fontSizeScaleDevice + MAX_DEVICE_SCALE)
41
- }
42
-
43
- if (fontScale > 1) {
44
- fontSizeScaleOS = min(fontScale * fontSizeScaleOS, fontSizeScaleOS * scaleSizeMaxRate)
45
- }
46
-
47
- return max(
48
- fontSizeScaleDevice,
49
- fontSizeScaleOS
50
- )
51
- }
52
-
53
- @Composable
54
- fun scaleSize(size: TextUnit): TextUnit {
55
- if (!size.isSp) return size
56
-
57
- val density = LocalDensity.current
58
-
59
- val scaled = scaleSize(size.value)
60
- val spValue = scaled / density.fontScale
61
-
62
- return TextUnit(value = spValue, type = TextUnitType.Sp)
63
- }
64
-
65
- @Composable
66
- fun scaleSize(size: Dp): Dp {
67
- return scaleSize(size.value).dp
68
- }
69
-
70
- @Composable
71
- fun scaleSize(textStyle: TextStyle): TextStyle {
72
- return textStyle.copy(
73
- fontSize = if (textStyle.fontSize != TextUnit.Unspecified)
74
- scaleSize(textStyle.fontSize)
75
- else
76
- TextUnit.Unspecified,
77
-
78
- lineHeight = if (textStyle.lineHeight != TextUnit.Unspecified)
79
- scaleSize(textStyle.lineHeight)
80
- else
81
- TextUnit.Unspecified,
82
- )
83
- }
84
-
85
-
86
- /**
87
- * Tên file font trong tài nguyên native của app host (xem [hostFontFamily]).
88
- *
89
- * SDK không đóng gói font riêng nữa: app host đã bundle sẵn toàn bộ font từ `font-source`
90
- * cho cả React Native lẫn native, nên bản copy trong `composeResources` chỉ làm phình app.
91
- */
92
- private const val LEGACY_DEFAULT_FONT_FILE = "SFProText-Regular.ttf"
93
- private const val NEW_DEFAULT_FONT_FILE = "MomoTrustSans-Regular.ttf"
94
-
95
- private val hostFontFiles: Map<String, String> = mapOf(
96
- "SFProText-100" to "SFProText-Thin.ttf",
97
- "SFProText-200" to "SFProText-Ultralight.ttf",
98
- "SFProText-300" to "SFProText-Light.ttf",
99
- "SFProText-400" to LEGACY_DEFAULT_FONT_FILE,
100
- "SFProText-500" to "SFProText-Medium.ttf",
101
- "SFProText-600" to "SFProText-Semibold.ttf",
102
- "SFProText-700" to "SFProText-Bold.ttf",
103
- "SFProText-800" to "SFProText-Heavy.ttf",
104
- "SFProText-900" to "SFProText-Black.ttf",
105
-
106
- "MomoTrustSans-100" to "MomoTrustSans-ExtraLight.ttf",
107
- "MomoTrustSans-200" to "MomoTrustSans-ExtraLight.ttf",
108
- "MomoTrustSans-300" to "MomoTrustSans-Light.ttf",
109
- "MomoTrustSans-400" to "MomoTrustSans-Regular.ttf",
110
- "MomoTrustSans-500" to "MomoTrustSans-Medium.ttf",
111
- "MomoTrustSans-600" to "MomoTrustSans-SemiBold.ttf",
112
- "MomoTrustSans-700" to "MomoTrustSans-Bold.ttf",
113
- "MomoTrustSans-800" to "MomoTrustSans-ExtraBold.ttf",
114
- "MomoTrustSans-900" to "MomoTrustSans-ExtraBold.ttf",
115
- ) + (1..9).flatMap { step ->
116
- val weight = step * 100
117
- listOf(
118
- "MoMoSignature-$weight" to "MoMoSignature.otf",
119
- "MoMoTrustDisplay-$weight" to "MoMoTrustDisplay.otf",
120
- )
121
- }
122
-
123
- private const val NEW_DEFAULT_FONT_FAMILY = "MomoTrustSans"
124
- private const val LEGACY_DEFAULT_FONT_FAMILY = "SFProText"
125
-
126
- internal val defaultFontFamily: String
127
- get() = if (KitDesignSystem.isWhiteList) NEW_DEFAULT_FONT_FAMILY else LEGACY_DEFAULT_FONT_FAMILY
128
-
129
- @Composable
130
- fun getFontFamily(fontFamily: String, fontWeight: FontWeight? = FontWeight.Normal): FontFamily {
131
- val isWhiteList = KitDesignSystem.isWhiteList
132
- val defaultFile = if (isWhiteList) NEW_DEFAULT_FONT_FILE else LEGACY_DEFAULT_FONT_FILE
133
- val key = "$fontFamily-${fontWeight?.weight}"
134
- val fileName = hostFontFiles[key] ?: defaultFile
135
- return hostFontFamily(fileName)
136
- ?: hostFontFamily(defaultFile)
137
- ?: FontFamily.Default
138
- }
139
-
140
- @Immutable
141
- class AppTypography internal constructor(
142
- val headlineDefaultBold: TextStyle,
143
- val headerMBold: TextStyle,
144
- val headerDefaultBold: TextStyle,
145
- val headerSSemibold: TextStyle,
146
- val headerXsSemibold: TextStyle,
147
- val bodyDefaultRegular: TextStyle,
148
- val bodyDefaultRegularStrikethrough: TextStyle,
149
- val descriptionDefaultRegular: TextStyle,
150
- val descriptionDefaultRegularStrikethrough: TextStyle,
151
- val descriptionXsRegular: TextStyle,
152
- val descriptionXsRegularStrikethrough: TextStyle,
153
- val labelDefaultMedium: TextStyle,
154
- val labelSMedium: TextStyle,
155
- val labelXsMedium: TextStyle,
156
- val actionDefaultBold: TextStyle,
157
- val actionSBold: TextStyle,
158
- val actionXsBold: TextStyle,
159
- val actionXxsBold: TextStyle,
160
- ) {
161
- constructor(
162
- default: TextStyle = TextStyle(
163
- fontSize = 14.sp,
164
- lineHeight = 20.sp,
165
- fontWeight = FontWeight.Normal
166
- ),
167
- headlineDefaultBold: TextStyle = TextStyle(
168
- fontSize = 24.sp,
169
- lineHeight = 34.sp,
170
- fontWeight = FontWeight.Bold
171
- ),
172
- headerMBold: TextStyle = TextStyle(
173
- fontSize = 18.sp,
174
- lineHeight = 26.sp,
175
- fontWeight = FontWeight.Bold
176
- ),
177
- headerDefaultBold: TextStyle = TextStyle(
178
- fontSize = 16.sp,
179
- lineHeight = 22.sp,
180
- fontWeight = FontWeight.Bold
181
- ),
182
- headerSSemibold: TextStyle = TextStyle(
183
- fontSize = 14.sp,
184
- lineHeight = 20.sp,
185
- fontWeight = FontWeight.SemiBold
186
- ),
187
- headerXsSemibold: TextStyle = TextStyle(
188
- fontSize = 12.sp,
189
- lineHeight = 18.sp,
190
- fontWeight = FontWeight.SemiBold
191
- ),
192
- bodyDefaultRegular: TextStyle = TextStyle(
193
- fontSize = 14.sp,
194
- lineHeight = 20.sp,
195
- fontWeight = FontWeight.Normal
196
- ),
197
- bodyDefaultRegularStrikethrough: TextStyle = TextStyle(
198
- fontSize = 14.sp,
199
- lineHeight = 20.sp,
200
- fontWeight = FontWeight.Normal,
201
- textDecoration = TextDecoration.LineThrough
202
- ),
203
- descriptionDefaultRegular: TextStyle = TextStyle(
204
- fontSize = 12.sp,
205
- lineHeight = 18.sp,
206
- fontWeight = FontWeight.Normal
207
- ),
208
- descriptionDefaultRegularStrikethrough: TextStyle = TextStyle(
209
- fontSize = 12.sp,
210
- lineHeight = 18.sp,
211
- fontWeight = FontWeight.Normal,
212
- textDecoration = TextDecoration.LineThrough
213
- ),
214
- descriptionXsRegular: TextStyle = TextStyle(
215
- fontSize = 10.sp,
216
- lineHeight = 14.sp,
217
- fontWeight = FontWeight.Normal
218
- ),
219
- descriptionXsRegularStrikethrough: TextStyle = TextStyle(
220
- fontSize = 10.sp,
221
- lineHeight = 14.sp,
222
- fontWeight = FontWeight.Normal,
223
- textDecoration = TextDecoration.LineThrough
224
- ),
225
- labelDefaultMedium: TextStyle = TextStyle(
226
- fontSize = 14.sp,
227
- lineHeight = 20.sp,
228
- fontWeight = FontWeight.Medium
229
- ),
230
- labelSMedium: TextStyle = TextStyle(
231
- fontSize = 12.sp,
232
- lineHeight = 18.sp,
233
- fontWeight = FontWeight.Medium
234
- ),
235
- labelXsMedium: TextStyle = TextStyle(
236
- fontSize = 10.sp,
237
- lineHeight = 14.sp,
238
- fontWeight = FontWeight.Medium
239
- ),
240
- actionDefaultBold: TextStyle = TextStyle(
241
- fontSize = 16.sp,
242
- lineHeight = 22.sp,
243
- fontWeight = FontWeight.Bold
244
- ),
245
- actionSBold: TextStyle = TextStyle(
246
- fontSize = 14.sp,
247
- lineHeight = 20.sp,
248
- fontWeight = FontWeight.Bold
249
- ),
250
- actionXsBold: TextStyle = TextStyle(
251
- fontSize = 12.sp,
252
- lineHeight = 18.sp,
253
- fontWeight = FontWeight.Bold
254
- ),
255
- actionXxsBold: TextStyle = TextStyle(
256
- fontSize = 10.sp,
257
- lineHeight = 14.sp,
258
- fontWeight = FontWeight.Bold
259
- ),
260
- ) : this(
261
- headlineDefaultBold = headlineDefaultBold,
262
- headerMBold = headerMBold,
263
- headerDefaultBold = headerDefaultBold,
264
- headerSSemibold = headerSSemibold,
265
- headerXsSemibold = headerXsSemibold,
266
- bodyDefaultRegular = bodyDefaultRegular,
267
- bodyDefaultRegularStrikethrough = bodyDefaultRegularStrikethrough,
268
- descriptionDefaultRegular = descriptionDefaultRegular,
269
- descriptionDefaultRegularStrikethrough = descriptionDefaultRegularStrikethrough,
270
- descriptionXsRegular = descriptionXsRegular,
271
- descriptionXsRegularStrikethrough = descriptionXsRegularStrikethrough,
272
- labelDefaultMedium = labelDefaultMedium,
273
- labelSMedium = labelSMedium,
274
- labelXsMedium = labelXsMedium,
275
- actionDefaultBold = actionDefaultBold,
276
- actionSBold = actionSBold,
277
- actionXsBold = actionXsBold,
278
- actionXxsBold = actionXxsBold
279
- )
280
- }
281
-
282
- val Typography = AppTypography()
@@ -1,54 +0,0 @@
1
- package vn.momo.kits.layout
2
-
3
- import androidx.compose.foundation.background
4
- import androidx.compose.foundation.layout.Arrangement
5
- import androidx.compose.foundation.layout.Box
6
- import androidx.compose.foundation.layout.BoxWithConstraints
7
- import androidx.compose.foundation.layout.ExperimentalLayoutApi
8
- import androidx.compose.foundation.layout.FlowRow
9
- import androidx.compose.foundation.layout.PaddingValues
10
- import androidx.compose.foundation.layout.fillMaxWidth
11
- import androidx.compose.foundation.layout.padding
12
- import androidx.compose.foundation.shape.RoundedCornerShape
13
- import androidx.compose.runtime.Composable
14
- import androidx.compose.runtime.CompositionLocalProvider
15
- import androidx.compose.ui.Modifier
16
- import androidx.compose.ui.draw.clip
17
- import androidx.compose.ui.draw.shadow
18
- import androidx.compose.ui.graphics.Color
19
- import androidx.compose.ui.unit.dp
20
- import vn.momo.kits.components.Image
21
- import vn.momo.kits.const.AppTheme
22
- import vn.momo.kits.const.Radius
23
- import vn.momo.kits.const.Spacing
24
-
25
- @Composable
26
- @OptIn(ExperimentalLayoutApi::class)
27
- fun Card(
28
- useShadow: Boolean = false,
29
- backgroundImage: String? = null,
30
- backgroundColor: Color? = null,
31
- contentPadding: PaddingValues = PaddingValues(Spacing.M),
32
- modifier: Modifier = Modifier,
33
- content: @Composable () -> Unit,
34
- ) {
35
- val columns = gridColumns()
36
- val gap = Spacing.S
37
- val shape = RoundedCornerShape(Radius.M)
38
- var surface = modifier.fillMaxWidth().padding(horizontal = Spacing.M)
39
- if (useShadow) surface = surface.shadow(6.dp, shape)
40
- surface = surface.clip(shape).background(backgroundColor ?: AppTheme.current.colors.background.surface)
41
- Box(modifier = surface) {
42
- if (backgroundImage != null) {
43
- Image(source = backgroundImage, modifier = Modifier.matchParentSize())
44
- }
45
- BoxWithConstraints(modifier = Modifier.fillMaxWidth().padding(contentPadding)) {
46
- CompositionLocalProvider(LocalGridContext provides gridContext(constraints.maxWidth, columns, gap)) {
47
- FlowRow(
48
- horizontalArrangement = Arrangement.spacedBy(gap),
49
- verticalArrangement = Arrangement.spacedBy(gap),
50
- ) { content() }
51
- }
52
- }
53
- }
54
- }
@@ -1,51 +0,0 @@
1
- package vn.momo.kits.layout
2
-
3
- import androidx.compose.foundation.layout.Column
4
- import androidx.compose.foundation.layout.height
5
- import androidx.compose.foundation.layout.width
6
- import androidx.compose.runtime.Composable
7
- import androidx.compose.runtime.compositionLocalOf
8
- import androidx.compose.ui.Modifier
9
- import androidx.compose.ui.platform.LocalDensity
10
- import androidx.compose.ui.unit.Dp
11
- import androidx.compose.ui.unit.dp
12
- import vn.momo.kits.platform.getScreenDimensions
13
- import kotlin.math.floor
14
-
15
- internal data class GridContext(
16
- val numberOfColumns: Int = 12,
17
- val gutterPx: Int = 0,
18
- val columnPx: Float = 0f,
19
- val density: Float = 1f,
20
- ) {
21
- fun sizeForSpan(span: Int): Dp = (floor(columnPx * span + gutterPx * (span - 1)) / density).dp
22
- }
23
-
24
- internal val LocalGridContext = compositionLocalOf<GridContext?> { null }
25
-
26
- @Composable
27
- internal fun gridColumns(): Int = if (getScreenDimensions().width > 600) 24 else 12
28
-
29
- @Composable
30
- internal fun gridContext(maxWidthPx: Int, columns: Int, gap: Dp): GridContext {
31
- val density = LocalDensity.current
32
- val gutterPx = with(density) { gap.roundToPx() }
33
- return GridContext(columns, gutterPx, (maxWidthPx - gutterPx * (columns - 1)).toFloat() / columns, density.density)
34
- }
35
-
36
- @Composable
37
- fun Item(
38
- widthSpan: Int? = null,
39
- heightSpan: Int = 0,
40
- modifier: Modifier = Modifier,
41
- contentModifier: Modifier = Modifier,
42
- content: @Composable () -> Unit,
43
- ) {
44
- val grid = LocalGridContext.current
45
- var m = modifier
46
- if (grid != null) {
47
- m = m.width(grid.sizeForSpan(widthSpan ?: grid.numberOfColumns))
48
- if (heightSpan > 0) m = m.height(grid.sizeForSpan(heightSpan))
49
- }
50
- Column(modifier = m.then(contentModifier)) { content() }
51
- }
@@ -1,41 +0,0 @@
1
- package vn.momo.kits.layout
2
-
3
- import androidx.compose.foundation.layout.Arrangement
4
- import androidx.compose.foundation.layout.Box
5
- import androidx.compose.foundation.layout.BoxWithConstraints
6
- import androidx.compose.foundation.layout.ExperimentalLayoutApi
7
- import androidx.compose.foundation.layout.FlowRow
8
- import androidx.compose.foundation.layout.fillMaxWidth
9
- import androidx.compose.foundation.layout.padding
10
- import androidx.compose.runtime.Composable
11
- import androidx.compose.runtime.CompositionLocalProvider
12
- import androidx.compose.ui.Modifier
13
- import androidx.compose.ui.unit.dp
14
- import vn.momo.kits.components.Image
15
- import vn.momo.kits.const.Spacing
16
-
17
- @Composable
18
- @OptIn(ExperimentalLayoutApi::class)
19
- fun Section(
20
- useMargin: Boolean = true,
21
- backgroundImage: String? = null,
22
- modifier: Modifier = Modifier,
23
- content: @Composable () -> Unit,
24
- ) {
25
- val columns = gridColumns()
26
- val gap = Spacing.M
27
- val margin = if (useMargin) Spacing.M else 0.dp
28
- Box(modifier = Modifier.fillMaxWidth().padding(horizontal = margin).then(modifier)) {
29
- if (backgroundImage != null) {
30
- Image(source = backgroundImage, modifier = Modifier.matchParentSize())
31
- }
32
- BoxWithConstraints(modifier = Modifier.fillMaxWidth()) {
33
- CompositionLocalProvider(LocalGridContext provides gridContext(constraints.maxWidth, columns, gap)) {
34
- FlowRow(
35
- horizontalArrangement = Arrangement.spacedBy(gap),
36
- verticalArrangement = Arrangement.spacedBy(gap),
37
- ) { content() }
38
- }
39
- }
40
- }
41
- }
@@ -1,52 +0,0 @@
1
- package vn.momo.kits.modifier
2
-
3
- import androidx.compose.ui.Modifier
4
- import androidx.compose.ui.node.ModifierNodeElement
5
- import androidx.compose.ui.node.SemanticsModifierNode
6
- import androidx.compose.ui.semantics.SemanticsPropertyReceiver
7
- import androidx.compose.ui.semantics.contentDescription
8
- import androidx.compose.ui.semantics.semantics
9
- import androidx.compose.ui.semantics.testTag
10
- import vn.momo.kits.platform.getPlatformName
11
-
12
- fun Modifier.setAutomationId(accessibilityId: String, mergeDescendants: Boolean = false): Modifier {
13
- return if (getPlatformName() == "Android") {
14
- semantics {
15
- contentDescription = accessibilityId
16
- }
17
- } else {
18
- semantics(mergeDescendants = mergeDescendants) {
19
- testTag = accessibilityId
20
- }
21
- }}
22
-
23
- fun Modifier.kitsAutomationId(accessibilityId: String, label: String? = null) =
24
- this then KitsAutomationIdElement(accessibilityId, label)
25
-
26
- private data class KitsAutomationIdElement(
27
- private val accessibilityId: String,
28
- private val label: String? = null,
29
- ) : ModifierNodeElement<KitsAutomationIdNode>() {
30
- override fun create(): KitsAutomationIdNode {
31
- return KitsAutomationIdNode(accessibilityId, label)
32
- }
33
-
34
- override fun update(node: KitsAutomationIdNode) {
35
- node.accessibilityId = accessibilityId
36
- node.label = label
37
- }
38
- }
39
-
40
- private class KitsAutomationIdNode(
41
- var accessibilityId: String,
42
- var label: String?,
43
- ) : Modifier.Node(), SemanticsModifierNode {
44
- override fun SemanticsPropertyReceiver.applySemantics() {
45
- if (getPlatformName() == "Android") {
46
- contentDescription = accessibilityId
47
- } else {
48
- testTag = accessibilityId
49
- contentDescription = label ?: accessibilityId
50
- }
51
- }
52
- }