@momo-kits/native-kits 0.153.2-newsfeed.8 → 0.154.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/CODE_OF_CONDUCT.md +133 -0
  2. package/CONTRIBUTING.md +114 -0
  3. package/LICENSE +20 -0
  4. package/README.md +5 -175
  5. package/build.gradle.kts +32 -0
  6. package/compose/MoMoComposeKits.podspec +54 -0
  7. package/compose/build.gradle.kts +149 -0
  8. package/compose/src/androidMain/AndroidManifest.xml +2 -0
  9. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +105 -0
  10. package/compose/src/commonMain/composeResources/files/lottie_circle_loader.json +1 -0
  11. package/compose/src/commonMain/composeResources/font/momosignature.otf +0 -0
  12. package/compose/src/commonMain/composeResources/font/momotrustdisplay.otf +0 -0
  13. package/compose/src/commonMain/composeResources/font/sfprotext_black.otf +0 -0
  14. package/compose/src/commonMain/composeResources/font/sfprotext_black.ttf +0 -0
  15. package/compose/src/commonMain/composeResources/font/sfprotext_bold.ttf +0 -0
  16. package/compose/src/commonMain/composeResources/font/sfprotext_heavy.ttf +0 -0
  17. package/compose/src/commonMain/composeResources/font/sfprotext_light.ttf +0 -0
  18. package/compose/src/commonMain/composeResources/font/sfprotext_medium.ttf +0 -0
  19. package/compose/src/commonMain/composeResources/font/sfprotext_regular.ttf +0 -0
  20. package/compose/src/commonMain/composeResources/font/sfprotext_semibold.ttf +0 -0
  21. package/compose/src/commonMain/composeResources/font/sfprotext_thin.otf +0 -0
  22. package/compose/src/commonMain/composeResources/font/sfprotext_thin.ttf +0 -0
  23. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.otf +0 -0
  24. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.ttf +0 -0
  25. package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +57 -0
  26. package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +201 -0
  27. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +222 -0
  28. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +48 -0
  29. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +86 -0
  30. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +76 -0
  31. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +76 -0
  32. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +308 -0
  33. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +33 -0
  34. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +715 -0
  35. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +214 -0
  36. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +404 -0
  37. package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +69 -0
  38. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +78 -0
  39. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +27 -0
  40. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +334 -0
  41. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +345 -0
  42. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +90 -0
  43. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +133 -0
  44. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +543 -0
  45. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +23 -0
  46. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +69 -0
  47. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +143 -0
  48. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +179 -0
  49. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +111 -0
  50. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +393 -0
  51. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +164 -0
  52. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +234 -0
  53. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +226 -0
  54. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +221 -0
  55. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +246 -0
  56. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +233 -0
  57. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +364 -0
  58. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +50 -0
  59. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +34 -0
  60. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +85 -0
  61. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +33 -0
  62. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +338 -0
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +95 -0
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +64 -0
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +19 -0
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +89 -0
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +91 -0
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +86 -0
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +83 -0
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +208 -0
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +172 -0
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +199 -0
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +29 -0
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +237 -0
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +191 -0
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +306 -0
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +12 -0
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +13 -0
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +189 -0
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +285 -0
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +2 -0
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +35 -0
  83. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +2 -0
  84. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +59 -0
  85. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +68 -0
  86. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +11 -0
  87. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +49 -0
  88. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +51 -0
  89. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +232 -0
  90. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +111 -0
  91. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +94 -0
  92. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +159 -0
  93. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +302 -0
  94. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +483 -0
  95. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +169 -0
  96. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +215 -0
  97. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +86 -0
  98. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +180 -0
  99. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +251 -0
  100. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +80 -0
  101. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +306 -0
  102. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +31 -0
  103. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +385 -0
  104. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +125 -0
  105. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +38 -0
  106. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +1329 -0
  107. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +62 -0
  108. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +88 -0
  109. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +144 -0
  110. package/gradle.properties +19 -0
  111. package/gradlew +240 -0
  112. package/gradlew.bat +91 -0
  113. package/ios/Theme.md +18 -0
  114. package/ios/native-kits.podspec +16 -18
  115. package/local.properties +8 -0
  116. package/package.json +4 -2
  117. package/settings.gradle.kts +25 -0
@@ -0,0 +1,308 @@
1
+ package vn.momo.kits.application
2
+
3
+ import androidx.compose.foundation.background
4
+ import androidx.compose.foundation.border
5
+ import androidx.compose.foundation.clickable
6
+ import androidx.compose.foundation.layout.Arrangement
7
+ import androidx.compose.foundation.layout.Box
8
+ import androidx.compose.foundation.layout.Row
9
+ import androidx.compose.foundation.layout.height
10
+ import androidx.compose.foundation.layout.offset
11
+ import androidx.compose.foundation.layout.padding
12
+ import androidx.compose.foundation.layout.size
13
+ import androidx.compose.foundation.layout.width
14
+ import androidx.compose.foundation.shape.CircleShape
15
+ import androidx.compose.foundation.shape.RoundedCornerShape
16
+ import androidx.compose.runtime.Composable
17
+ import androidx.compose.runtime.Stable
18
+ import androidx.compose.runtime.getValue
19
+ import androidx.compose.runtime.mutableStateOf
20
+ import androidx.compose.runtime.remember
21
+ import androidx.compose.runtime.setValue
22
+ import androidx.compose.ui.Alignment
23
+ import androidx.compose.ui.Modifier
24
+ import androidx.compose.ui.draw.clip
25
+ import androidx.compose.ui.graphics.Color
26
+ import androidx.compose.ui.unit.dp
27
+ import kotlinx.serialization.json.Json
28
+ import kotlinx.serialization.json.jsonObject
29
+ import kotlinx.serialization.json.jsonPrimitive
30
+ import vn.momo.kits.components.BadgeDot
31
+ import vn.momo.kits.components.DotSize
32
+ import vn.momo.kits.components.Icon
33
+ import vn.momo.kits.const.AppTheme
34
+ import vn.momo.kits.const.Colors
35
+
36
+ @Stable
37
+ data class HeaderRightData(
38
+ val useShortcut: Boolean = false,
39
+ val useMore: Boolean = false,
40
+ val useSystemTools: Boolean = true,
41
+ val tools: List<ToolGroup> = emptyList(),
42
+ val toolCallback: ((String) -> Unit)? = { _ -> }
43
+ )
44
+
45
+ data class Tool(
46
+ val key: String,
47
+ val icon: String,
48
+ val showBadge: Boolean = false,
49
+ val name: Map<String, String> = emptyMap(),
50
+ val showRightIcon: Boolean = true,
51
+ ) {
52
+ fun toMap(): Map<String, Any> {
53
+ return mapOf(
54
+ "key" to key,
55
+ "icon" to icon,
56
+ "showBadge" to showBadge,
57
+ "name" to name,
58
+ "showRightIcon" to showRightIcon
59
+ )
60
+ }
61
+ }
62
+
63
+ data class ToolGroup(
64
+ val title: Map<String, String> = emptyMap(),
65
+ val items: List<Tool>
66
+ ) {
67
+ fun toMap(): Map<String, Any> {
68
+ return mapOf(
69
+ "title" to title,
70
+ "items" to items.map { it.toMap() }
71
+ )
72
+ }
73
+ }
74
+
75
+ data class NavigationButtonConfig(
76
+ val icon: String,
77
+ val onPress: () -> Unit
78
+ )
79
+
80
+ object Spacing {
81
+ val M = 16.dp
82
+ val S = 8.dp
83
+ val XXS = 2.dp
84
+ }
85
+
86
+ @Deprecated("Use vn.momo.kits.navigation.component.HeaderRight instead", ReplaceWith("vn.momo.kits.navigation.component.HeaderRight"))
87
+ @Composable
88
+ fun HeaderRight(
89
+ headerRight: HeaderRightData? = null,
90
+ opacity: Float = 1f,
91
+ animatedHeader: AnimatedHeader? = null,
92
+ tintColor: Color? = null,
93
+ ) {
94
+ Row(
95
+ verticalAlignment = Alignment.CenterVertically,
96
+ ) {
97
+ ToolkitHeaderRight(headerRight = headerRight, opacity = opacity, animatedHeader = animatedHeader, tintColor = tintColor)
98
+ }
99
+ }
100
+
101
+ private fun getNavigationButtonConfig(
102
+ headerRight: HeaderRightData? = null,
103
+ isFavorite: Boolean = false,
104
+ onPressShortcut: () -> Unit,
105
+ onPressMore: () -> Unit
106
+ ): NavigationButtonConfig {
107
+ val totalTools = headerRight?.tools?.sumOf { it.items.size } ?: 0
108
+ var icon = if (isFavorite) "pin_star_checked" else "pin_star"
109
+ var onClickHandler = onPressShortcut
110
+ if (totalTools > 1 || headerRight?.useMore == true) {
111
+ icon = "navigation_more_icon"
112
+ onClickHandler = onPressMore
113
+ } else if (totalTools == 1 && !headerRight?.tools.isNullOrEmpty()) {
114
+ val singleTool = headerRight?.tools?.first()?.items?.firstOrNull()
115
+ if (singleTool != null) {
116
+ icon = singleTool.icon
117
+ onClickHandler = {
118
+ headerRight.toolCallback?.invoke(singleTool.key)
119
+ }
120
+ }
121
+ }
122
+ return NavigationButtonConfig(icon, onClickHandler)
123
+ }
124
+
125
+ @Composable
126
+ private fun ToolkitHeaderRight(
127
+ headerRight: HeaderRightData? = null,
128
+ opacity: Float = 1f,
129
+ animatedHeader: AnimatedHeader? = null,
130
+ tintColor: Color? = null
131
+ ) {
132
+ var isFavorite by remember { mutableStateOf(false) }
133
+ val isLoading by remember { mutableStateOf(false) }
134
+ val api = PlatformApi.current as? ComposeApi
135
+ val context = ApplicationContext.current
136
+
137
+ fun onPressShortcut() {
138
+ api?.request("onToolAction", mapOf("item" to mapOf("key" to "onFavorite"))) {
139
+ isFavorite = !isFavorite
140
+ }
141
+ }
142
+
143
+ fun onPressHelpCenter() {
144
+ val paramMap = mapOf(
145
+ "appId" to context?.appId,
146
+ "code" to context?.appCode,
147
+ "name" to context?.appName,
148
+ "icon" to context?.appIcon,
149
+ "description" to context?.description
150
+ )
151
+ api?.request("showHelpCenter", paramMap) {
152
+
153
+ }
154
+ }
155
+
156
+ fun onPressClose() {
157
+ api?.request("dismissAll", "", { _ -> })
158
+ }
159
+
160
+ fun onPressMore() {
161
+ api?.request(
162
+ "showTools",
163
+ mapOf(
164
+ "useSystemTools" to headerRight?.useSystemTools,
165
+ "tools" to headerRight?.tools?.map { it.toMap() },
166
+ "context" to mapOf(
167
+ "appId" to context?.appId,
168
+ "code" to context?.appCode,
169
+ "name" to context?.appName,
170
+ "icon" to context?.appIcon,
171
+ "description" to context?.description,
172
+ "support" to context?.support,
173
+ "toolkitConfig" to context?.toolkitConfig,
174
+ "providerId" to context?.providerId,
175
+ "permissions" to context?.permissions
176
+ )
177
+ )
178
+ ) { response ->
179
+ try {
180
+ val json = Json.parseToJsonElement(response).jsonObject
181
+ val toolResponse = json["response"]?.jsonPrimitive?.content
182
+ if (toolResponse != null) {
183
+ headerRight?.toolCallback?.invoke(toolResponse)
184
+ }
185
+ } catch (e: Exception) {
186
+ println("Error parsing response: $e")
187
+ }
188
+ }
189
+ }
190
+
191
+ val navButtonConfig = getNavigationButtonConfig(
192
+ headerRight,
193
+ isFavorite,
194
+ ::onPressShortcut,
195
+ ::onPressMore
196
+ )
197
+
198
+ val showBadge = headerRight?.tools?.any { group ->
199
+ group.items.any { it.showBadge }
200
+ }
201
+
202
+ val toolkitWidth = if (context !== null) 65.dp else 28.dp
203
+
204
+ var isShowShortcut = headerRight?.useShortcut == true
205
+
206
+ if (headerRight?.useMore == true && context == null) {
207
+ isShowShortcut = false
208
+ }
209
+
210
+ val color = getHeaderColor(animatedHeader, opacity, tintColor, AppTheme.current.colors.text.default)
211
+ val tintIconColor = color.tintIconColor
212
+ val backgroundButton = color.backgroundButton
213
+ val borderColor = color.borderColor
214
+
215
+ Row(
216
+ verticalAlignment = Alignment.CenterVertically
217
+ ) {
218
+ if (isShowShortcut) {
219
+ NavigationButton(
220
+ disabled = isLoading,
221
+ icon = navButtonConfig.icon,
222
+ showBadge = showBadge,
223
+ onClick = navButtonConfig.onPress,
224
+ tintColor = tintIconColor
225
+ )
226
+ }
227
+ Row(
228
+ verticalAlignment = Alignment.CenterVertically,
229
+ horizontalArrangement = Arrangement.Center,
230
+ modifier = Modifier
231
+ .padding(start = Spacing.S)
232
+ .border(0.2.dp, borderColor, shape = RoundedCornerShape(14.dp))
233
+ .width(toolkitWidth)
234
+ .height(28.dp)
235
+ .clip(shape = RoundedCornerShape(14.dp))
236
+ .background(backgroundButton)
237
+ ) {
238
+ if (context != null) {
239
+ Icon(
240
+ source = "help_center",
241
+ size = 20.dp,
242
+ color = tintIconColor,
243
+ modifier = Modifier.padding(4.dp).clickable {
244
+ onPressHelpCenter()
245
+ })
246
+ Box(
247
+ modifier = Modifier
248
+ .width(0.5.dp)
249
+ .height(12.dp)
250
+ .background(tintColor ?: Colors.black_20)
251
+ )
252
+ }
253
+
254
+ Icon(
255
+ source = "16_basic_home",
256
+ size = 20.dp,
257
+ color = tintIconColor,
258
+ modifier = Modifier.padding(4.dp).clickable { onPressClose() }
259
+ )
260
+ }
261
+ }
262
+ }
263
+
264
+ @Deprecated("Use vn.momo.kits.navigation.component instead", ReplaceWith("vn.momo.kits.navigation.component"))
265
+ @Composable
266
+ fun NavigationButton(
267
+ disabled: Boolean,
268
+ icon: String,
269
+ showBadge: Boolean? = false,
270
+ onClick: () -> Unit,
271
+ tintColor: Color?
272
+ ) {
273
+ val backgroundButton = if (tintColor == Colors.black_01) Colors.black_20.copy(alpha = 0.6f) else Colors.black_01.copy(alpha = 0.6f)
274
+ val borderColor = if (tintColor == Colors.black_01) Colors.black_01.copy(alpha = 0.2f) else Colors.black_20.copy(alpha = 0.2f)
275
+
276
+ Box(
277
+ modifier = Modifier
278
+ .size(28.dp)
279
+ .clickable(enabled = !disabled, onClick = onClick)
280
+ ) {
281
+ Box(
282
+ modifier = Modifier
283
+ .matchParentSize()
284
+ .clip(CircleShape)
285
+ .background(backgroundButton)
286
+ .border(0.2.dp, borderColor, CircleShape)
287
+ )
288
+ Box(
289
+ modifier = Modifier.matchParentSize(),
290
+ contentAlignment = Alignment.Center
291
+ ) {
292
+ Icon(
293
+ source = icon,
294
+ size = 20.dp,
295
+ color = tintColor
296
+ )
297
+ }
298
+
299
+ if (showBadge == true) {
300
+ BadgeDot(
301
+ size = DotSize.Small,
302
+ modifier = Modifier
303
+ .align(Alignment.TopEnd)
304
+ .offset(x = -Spacing.XXS, y = -Spacing.XXS)
305
+ )
306
+ }
307
+ }
308
+ }
@@ -0,0 +1,33 @@
1
+ package vn.momo.kits.application
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.style.TextAlign
7
+ import androidx.compose.ui.text.style.TextOverflow
8
+ import androidx.compose.ui.unit.sp
9
+ import androidx.compose.ui.zIndex
10
+ import vn.momo.kits.components.Text
11
+ import vn.momo.kits.const.Typography
12
+
13
+ @Deprecated("Use vn.momo.kits.navigation.component instead", ReplaceWith("vn.momo.kits.navigation.component"))
14
+ @Composable
15
+ fun HeaderTitle(
16
+ title: String = "",
17
+ modifier: Modifier = Modifier,
18
+ textAlign: TextAlign = TextAlign.Start,
19
+ color: Color? = null,
20
+ ) {
21
+ Text(
22
+ modifier = Modifier.then(modifier).zIndex(1f),
23
+ text = title,
24
+ textAlign = textAlign,
25
+ style = Typography.actionSBold.copy(
26
+ fontSize = 15.sp,
27
+ lineHeight = 22.sp,
28
+ ),
29
+ color = color,
30
+ maxLines = 1,
31
+ overflow = TextOverflow.Ellipsis
32
+ )
33
+ }