@momo-kits/native-kits 0.167.1-beta.3-debug → 0.167.1-beta.4

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/.claude/settings.local.json +14 -0
  2. package/ios/native-kits.podspec +1 -1
  3. package/ios-demo/MoMoUIKitsDemo.podspec +1 -1
  4. package/package.json +1 -1
  5. package/build.gradle.kts +0 -11
  6. package/compose/build.gradle.kts +0 -190
  7. package/compose/build.gradle.kts.backup +0 -190
  8. package/compose/compose.podspec +0 -47
  9. package/compose/src/androidMain/kotlin/vn/momo/kits/const/HostFont.android.kt +0 -19
  10. package/compose/src/androidMain/kotlin/vn/momo/kits/navigation/ScrollToTop.android.kt +0 -6
  11. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/BackGesture.android.kt +0 -12
  12. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/OsFontScale.android.kt +0 -7
  13. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +0 -151
  14. package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +0 -52
  15. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +0 -124
  16. package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +0 -183
  17. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +0 -207
  18. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +0 -39
  19. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +0 -86
  20. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +0 -76
  21. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +0 -76
  22. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +0 -293
  23. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +0 -33
  24. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +0 -831
  25. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Localize.kt +0 -269
  26. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +0 -110
  27. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +0 -378
  28. package/compose/src/commonMain/kotlin/vn/momo/kits/application/WidgetContainer.kt +0 -56
  29. package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +0 -69
  30. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Avatar.kt +0 -157
  31. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +0 -82
  32. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +0 -32
  33. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +0 -338
  34. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BaselineView.kt +0 -175
  35. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +0 -356
  36. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Carousel.kt +0 -113
  37. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +0 -89
  38. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +0 -128
  39. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Collapse.kt +0 -209
  40. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +0 -542
  41. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +0 -49
  42. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +0 -76
  43. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +0 -125
  44. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +0 -231
  45. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +0 -189
  46. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +0 -475
  47. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +0 -114
  48. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +0 -266
  49. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +0 -240
  50. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +0 -223
  51. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +0 -264
  52. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +0 -185
  53. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +0 -343
  54. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Loader.kt +0 -108
  55. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +0 -56
  56. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +0 -41
  57. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +0 -84
  58. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +0 -40
  59. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +0 -328
  60. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +0 -97
  61. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ProgressInfo.kt +0 -310
  62. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +0 -59
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Rating.kt +0 -87
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +0 -21
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +0 -90
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Slider.kt +0 -323
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +0 -220
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Steps.kt +0 -473
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/components/SuggestAction.kt +0 -122
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Swipe.kt +0 -199
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +0 -91
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +0 -552
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +0 -88
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +0 -125
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +0 -207
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +0 -498
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +0 -176
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Uploader.kt +0 -182
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +0 -193
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +0 -29
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +0 -234
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +0 -188
  83. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +0 -325
  84. package/compose/src/commonMain/kotlin/vn/momo/kits/const/HostFont.kt +0 -16
  85. package/compose/src/commonMain/kotlin/vn/momo/kits/const/KitDesignSystem.kt +0 -18
  86. package/compose/src/commonMain/kotlin/vn/momo/kits/const/KitFontScale.kt +0 -22
  87. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +0 -12
  88. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +0 -16
  89. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +0 -188
  90. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +0 -296
  91. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +0 -52
  92. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +0 -38
  93. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +0 -39
  94. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +0 -52
  95. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +0 -66
  96. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +0 -11
  97. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +0 -104
  98. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +0 -48
  99. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +0 -51
  100. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +0 -299
  101. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/HostBackGestureBridge.kt +0 -58
  102. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +0 -129
  103. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +0 -106
  104. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +0 -201
  105. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +0 -393
  106. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ScrollToTop.kt +0 -8
  107. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +0 -595
  108. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackTransition.kt +0 -148
  109. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/SwipeBackHaptic.kt +0 -35
  110. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +0 -175
  111. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +0 -225
  112. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +0 -86
  113. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +0 -169
  114. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +0 -358
  115. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +0 -83
  116. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderJourney.kt +0 -106
  117. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderLocation.kt +0 -75
  118. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +0 -309
  119. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +0 -37
  120. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +0 -364
  121. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +0 -132
  122. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/tracking/ScreenTracker.kt +0 -127
  123. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/BackGesture.kt +0 -12
  124. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/ComposeLottieAnimation.kt +0 -91
  125. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/OsFontScale.kt +0 -9
  126. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +0 -71
  127. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +0 -1329
  128. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +0 -55
  129. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Tracking.kt +0 -15
  130. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +0 -105
  131. package/compose/src/iosMain/kotlin/vn/momo/kits/const/HostFont.ios.kt +0 -40
  132. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/HostBackGesture.ios.kt +0 -45
  133. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/ScrollToTop.ios.kt +0 -32
  134. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/BackGesture.ios.kt +0 -38
  135. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/OsFontScale.ios.kt +0 -66
  136. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +0 -213
  137. package/gradle/libs.versions.toml +0 -69
  138. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  139. package/gradle/wrapper/gradle-wrapper.properties +0 -8
  140. package/gradle.properties +0 -26
  141. package/gradlew +0 -252
  142. package/gradlew.bat +0 -94
  143. package/ios-demo/README.md +0 -120
  144. package/settings.gradle.kts +0 -64
@@ -1,125 +0,0 @@
1
- package vn.momo.kits.components
2
-
3
- import androidx.compose.foundation.border
4
- import androidx.compose.foundation.text.InlineTextContent
5
- import androidx.compose.runtime.Composable
6
- import androidx.compose.runtime.remember
7
- import androidx.compose.ui.Modifier
8
- import androidx.compose.ui.graphics.Color
9
- import androidx.compose.ui.text.AnnotatedString
10
- import androidx.compose.ui.text.TextLayoutResult
11
- import androidx.compose.ui.text.TextStyle
12
- import androidx.compose.ui.text.style.TextAlign
13
- import androidx.compose.ui.text.style.TextDecoration
14
- import androidx.compose.ui.text.style.TextOverflow
15
- import androidx.compose.ui.unit.TextUnit
16
- import androidx.compose.ui.unit.dp
17
- import vn.momo.kits.application.IsShowBaseLineDebug
18
- import vn.momo.kits.const.*
19
- import vn.momo.kits.modifier.conditional
20
- import vn.momo.kits.modifier.setAutomationId
21
-
22
- @Composable
23
- fun Text(
24
- text: String,
25
- color: Color? = null,
26
- style: TextStyle = Typography.bodyDefaultRegular,
27
- textAlign: TextAlign? = TextAlign.Start,
28
- modifier: Modifier = Modifier,
29
- maxLines: Int = Int.MAX_VALUE,
30
- overflow: TextOverflow = TextOverflow.Clip,
31
- textDecoration: TextDecoration? = null,
32
- onTextLayout: ((TextLayoutResult) -> Unit)? = null,
33
- fontFamily: String? = null,
34
- minLines: Int = 1,
35
- letterSpacing: TextUnit = TextUnit.Unspecified,
36
- softWrap: Boolean = true,
37
- accessibilityId: String? = null,
38
- inlineContent: Map<String, InlineTextContent> = mapOf(),
39
- ) {
40
- Text(
41
- text = AnnotatedString(text),
42
- color = color,
43
- style = style,
44
- textAlign = textAlign,
45
- modifier = modifier,
46
- maxLines = maxLines,
47
- overflow = overflow,
48
- textDecoration = textDecoration,
49
- onTextLayout = onTextLayout,
50
- fontFamily = fontFamily,
51
- minLines = minLines,
52
- letterSpacing = letterSpacing,
53
- softWrap = softWrap,
54
- accessibilityId = accessibilityId,
55
- inlineContent = inlineContent
56
- )
57
- }
58
-
59
-
60
- @Composable
61
- fun Text(
62
- text: AnnotatedString,
63
- color: Color? = null,
64
- style: TextStyle = Typography.bodyDefaultRegular,
65
- textAlign: TextAlign? = TextAlign.Start,
66
- modifier: Modifier = Modifier,
67
- maxLines: Int = Int.MAX_VALUE,
68
- overflow: TextOverflow = TextOverflow.Clip,
69
- textDecoration: TextDecoration? = null,
70
- onTextLayout: ((TextLayoutResult) -> Unit)? = null,
71
- fontFamily: String? = null,
72
- minLines: Int = 1,
73
- letterSpacing: TextUnit = TextUnit.Unspecified,
74
- softWrap: Boolean = true,
75
- accessibilityId: String? = null,
76
- inlineContent: Map<String, InlineTextContent> = mapOf(),
77
- ) {
78
- // Cache theme access to avoid repeated lookups
79
- val theme = AppTheme.current
80
-
81
- val fontSize = scaleSize(style.fontSize)
82
- val lineHeight = scaleSize(style.lineHeight)
83
- val font = getFontFamily(fontFamily ?: theme.font, style.fontWeight)
84
-
85
- // Memoize color calculation
86
- val textColor = remember(color, theme) {
87
- color ?: theme.colors.text.default
88
- }
89
-
90
- // Memoize style copy operation
91
- val optimizedStyle = remember(style) {
92
- style.copy(
93
- fontWeight = null,
94
- lineHeight = if (lineHeight.value.isFinite() && lineHeight.value > 0) lineHeight else style.lineHeight
95
- )
96
- }
97
-
98
- // Memoize automation ID
99
- val automationId = remember(accessibilityId, text) {
100
- accessibilityId ?: text
101
- }
102
-
103
- // on/off baseline config value, default will be false
104
-
105
- androidx.compose.material3.Text(
106
- modifier = modifier.conditional(IsShowBaseLineDebug){
107
- border(1.dp, Colors.blue_03)
108
- }.setAutomationId(automationId.toString()),
109
- text = text,
110
- color = textColor,
111
- style = optimizedStyle,
112
- textAlign = textAlign,
113
- fontSize = fontSize,
114
- fontFamily = font,
115
- maxLines = maxLines,
116
- softWrap = softWrap,
117
- letterSpacing = letterSpacing,
118
- minLines = minLines,
119
- textDecoration = textDecoration,
120
- onTextLayout = onTextLayout ?: {},
121
- overflow = overflow,
122
- inlineContent = inlineContent
123
- )
124
- }
125
-
@@ -1,207 +0,0 @@
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.layout.*
7
- import androidx.compose.foundation.shape.RoundedCornerShape
8
- import androidx.compose.runtime.Composable
9
- import androidx.compose.ui.Alignment
10
- import androidx.compose.ui.Modifier
11
- import androidx.compose.ui.graphics.Color
12
- import androidx.compose.ui.text.TextStyle
13
- import androidx.compose.ui.text.font.FontWeight
14
- import androidx.compose.ui.unit.dp
15
- import androidx.compose.ui.unit.sp
16
- import vn.momo.kits.application.IsShowBaseLineDebug
17
- import vn.momo.kits.const.AppTheme
18
- import vn.momo.kits.const.Colors
19
- import vn.momo.kits.const.Spacing
20
- import vn.momo.kits.const.Typography
21
- import vn.momo.kits.modifier.conditional
22
-
23
- enum class TitleType { Card, Section }
24
- enum class TitleSize { Small, Medium, Large }
25
- enum class IconAlign { Top, Center, Bottom }
26
- enum class ButtonSize { Small, Large }
27
-
28
- @Composable
29
- fun Title(
30
- title: String,
31
- type: TitleType = TitleType.Section,
32
- size: TitleSize = TitleSize.Medium,
33
- icon: String? = null,
34
- iconColor: Color? = null,
35
- iconAlign: IconAlign = IconAlign.Top,
36
- showRightAction: Boolean = false,
37
- showTrailingAction: Boolean = false,
38
- badgeLabel: String? = null,
39
- buttonTitle: String? = null,
40
- buttonSize: ButtonSize = ButtonSize.Small,
41
- onPressRightAction: () -> Unit = {},
42
- onPressTrailingAction: () -> Unit = {},
43
- textOnly: Boolean = false,
44
- description: String? = null,
45
- modifier: Modifier = Modifier
46
- ) {
47
- val theme = AppTheme.current
48
- val textStyle: TextStyle = when (type) {
49
- TitleType.Card -> when (size) {
50
- TitleSize.Small -> TextStyle(fontSize = 14.sp, lineHeight = 20.sp, fontWeight = FontWeight.Bold)
51
- TitleSize.Medium -> TextStyle(fontSize = 16.sp, lineHeight = 22.sp, fontWeight = FontWeight.Bold)
52
- TitleSize.Large -> TextStyle(fontSize = 18.sp, lineHeight = 26.sp, fontWeight = FontWeight.Bold)
53
- }
54
-
55
- TitleType.Section -> when (size) {
56
- TitleSize.Small -> TextStyle(
57
- fontSize = 16.sp,
58
- lineHeight = 24.sp,
59
- fontWeight = FontWeight.Bold
60
- )
61
-
62
- TitleSize.Medium -> TextStyle(
63
- fontSize = 18.sp,
64
- lineHeight = 26.sp,
65
- fontWeight = FontWeight.Bold
66
- )
67
-
68
- TitleSize.Large -> TextStyle(
69
- fontSize = 20.sp,
70
- lineHeight = 28.sp,
71
- fontWeight = FontWeight.Bold
72
- )
73
- }
74
- }
75
-
76
- if (textOnly) {
77
- Text(
78
- text = title,
79
- style = textStyle,
80
- modifier = modifier
81
- )
82
- return
83
- }
84
-
85
- Row(
86
- modifier = modifier
87
- .fillMaxWidth()
88
- .height(IntrinsicSize.Min)
89
- .conditional(IsShowBaseLineDebug) {
90
- border(1.dp, Colors.blue_03)
91
- }
92
- // react-kits' Title root is `styles.wrapper` = `{flexDirection:'row'}`
93
- // plus, for a SECTION only, `marginTop: Spacing.S` (foundations/Title
94
- // index.tsx). It has no padding at all, so the 8dp box here inset every
95
- // title by 8dp against the web render.
96
- .padding(top = if (type == TitleType.Section) Spacing.S else 0.dp),
97
- verticalAlignment = Alignment.CenterVertically
98
- ) {
99
- icon?.let {
100
- Column(
101
- modifier = Modifier.fillMaxHeight().padding(end = Spacing.S),
102
- verticalArrangement = when (iconAlign) {
103
- IconAlign.Top -> Arrangement.Top
104
- IconAlign.Center -> Arrangement.Center
105
- IconAlign.Bottom -> Arrangement.Bottom
106
- },
107
- ) {
108
- // Icon
109
- Icon(
110
- source = it,
111
- color = iconColor ?: theme.colors.text.default,
112
- modifier = Modifier.size(24.dp)
113
- )
114
- }
115
- }
116
-
117
- Column(
118
- modifier = Modifier.weight(1f)
119
- ) {
120
- Row(
121
- verticalAlignment = Alignment.CenterVertically
122
- ) {
123
- Row(
124
- verticalAlignment = Alignment.CenterVertically,
125
- modifier = if (showTrailingAction) Modifier else Modifier.weight(1f),
126
- ) {
127
- Text(
128
- text = title,
129
- style = textStyle,
130
- maxLines = if (showTrailingAction || badgeLabel != null) 1 else 2,
131
- )
132
-
133
- // Badge
134
- badgeLabel?.let {
135
- Spacer(modifier = Modifier.width(4.dp))
136
- Badge(
137
- label = it
138
- )
139
- }
140
-
141
- }
142
-
143
- // Trailing action (icon)
144
- if (showTrailingAction && !showRightAction) {
145
- Spacer(modifier = Modifier.width(8.dp))
146
- Box(
147
- modifier = Modifier
148
- .size(24.dp)
149
- .background(
150
- color = if (type == TitleType.Section) Colors.black_06.copy(0.6f) else Colors.black_06.copy(
151
- 0.3f
152
- ),
153
- shape = RoundedCornerShape(12.dp)
154
- )
155
- .clickable { onPressTrailingAction() },
156
- contentAlignment = Alignment.Center
157
- ) {
158
- Icon(
159
- source = "arrow_chevron_right_small",
160
- size = 18.dp
161
- )
162
- }
163
- }
164
- }
165
-
166
- // Description
167
- description?.let {
168
- Spacer(modifier = Modifier.height(4.dp))
169
- Text(
170
- text = it,
171
- style = Typography.descriptionDefaultRegular,
172
- color = theme.colors.text.secondary
173
- )
174
- }
175
- }
176
-
177
- // Right action (button or icon)
178
- if (showRightAction && !showTrailingAction) {
179
- Spacer(modifier = Modifier.width(8.dp))
180
- if (buttonTitle != null) {
181
- Text(
182
- text = buttonTitle,
183
- style = if (buttonSize === ButtonSize.Small) Typography.actionXsBold else Typography.actionSBold,
184
- color = theme.colors.primary,
185
- modifier = Modifier.clickable { onPressRightAction() }
186
- )
187
- } else {
188
- Box(
189
- modifier = Modifier
190
- .size(24.dp)
191
- .background(
192
- color = Colors.pink_03.copy(alpha = 0.1f),
193
- shape = RoundedCornerShape(12.dp)
194
- )
195
- .clickable { onPressRightAction() },
196
- contentAlignment = Alignment.Center
197
- ) {
198
- Icon(
199
- source = "arrow_chevron_right_small",
200
- modifier = Modifier.size(22.dp),
201
- color = theme.colors.primary
202
- )
203
- }
204
- }
205
- }
206
- }
207
- }