@momo-kits/native-kits 0.162.4-debug → 0.162.5-debug
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compose/build.gradle.kts +11 -8
- package/compose/build.gradle.kts.backup +10 -7
- package/compose/compose.podspec +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +2 -7
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +10 -3
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +6 -24
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +4 -19
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +1 -10
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +2 -2
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +5 -16
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +6 -101
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +2 -14
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +8 -33
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +1 -6
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +27 -29
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/BaselineView.kt +3 -26
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +27 -30
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Carousel.kt +3 -13
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +0 -5
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +3 -11
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Collapse.kt +3 -18
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +11 -11
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +3 -11
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +1 -5
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +84 -59
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +13 -71
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +10 -51
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +6 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +4 -21
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +15 -76
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +5 -26
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +3 -11
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +15 -36
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +3 -9
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/ProgressInfo.kt +0 -28
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +2 -13
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +4 -10
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Slider.kt +3 -28
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +8 -47
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Steps.kt +4 -25
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/SuggestAction.kt +2 -11
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Swipe.kt +1 -17
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +1 -6
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +50 -111
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +1 -5
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +7 -8
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +1 -12
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +4 -96
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Uploader.kt +2 -12
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +9 -21
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +2 -2
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +9 -14
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +8 -11
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +24 -40
- package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +0 -5
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +0 -2
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +94 -4
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +0 -2
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +1 -5
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +5 -15
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +48 -7
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +48 -33
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +56 -55
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +3 -9
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +12 -32
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +6 -24
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +11 -7
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +2 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +6 -3
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +3 -13
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +3 -2
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/tracking/ScreenTracker.kt +1 -40
- package/compose/src/commonMain/kotlin/vn/momo/kits/platform/ComposeLottieAnimation.kt +0 -2
- package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +0 -8
- package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +2 -17
- package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Tracking.kt +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +3 -3
- package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/ScrollToTop.ios.kt +2 -3
- package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +0 -2
- package/gradle.properties +1 -1
- package/ios/Application/ApplicationEnvironment.swift +1 -0
- package/ios/Application/FontScaleStore.swift +59 -0
- package/ios/Typography/Text.swift +12 -7
- package/ios/Typography/Typography.swift +13 -8
- package/package.json +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +0 -17
|
@@ -3,14 +3,7 @@ package vn.momo.kits.components
|
|
|
3
3
|
import androidx.compose.foundation.background
|
|
4
4
|
import androidx.compose.foundation.border
|
|
5
5
|
import androidx.compose.foundation.horizontalScroll
|
|
6
|
-
import androidx.compose.foundation.layout
|
|
7
|
-
import androidx.compose.foundation.layout.Column
|
|
8
|
-
import androidx.compose.foundation.layout.Row
|
|
9
|
-
import androidx.compose.foundation.layout.fillMaxWidth
|
|
10
|
-
import androidx.compose.foundation.layout.height
|
|
11
|
-
import androidx.compose.foundation.layout.offset
|
|
12
|
-
import androidx.compose.foundation.layout.padding
|
|
13
|
-
import androidx.compose.foundation.layout.width
|
|
6
|
+
import androidx.compose.foundation.layout.*
|
|
14
7
|
import androidx.compose.foundation.rememberScrollState
|
|
15
8
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
|
16
9
|
import androidx.compose.runtime.Composable
|
|
@@ -28,10 +21,9 @@ import vn.momo.kits.const.Colors
|
|
|
28
21
|
import vn.momo.kits.const.Spacing
|
|
29
22
|
import vn.momo.kits.modifier.conditional
|
|
30
23
|
|
|
31
|
-
val INDICATOR_WIDTH = 24.dp
|
|
32
|
-
val PROGRESS_WIDTH = 72.dp
|
|
24
|
+
private val INDICATOR_WIDTH = 24.dp
|
|
25
|
+
private val PROGRESS_WIDTH = 72.dp
|
|
33
26
|
|
|
34
|
-
// Memoized offset calculation to avoid repeated computations during scroll
|
|
35
27
|
private fun calculateOffset(currentPosition: Int, maxBound: Int): Dp {
|
|
36
28
|
return if (maxBound == 0) 0.dp else {
|
|
37
29
|
(PROGRESS_WIDTH - INDICATOR_WIDTH) * (currentPosition / maxBound.toFloat())
|
|
@@ -4,42 +4,22 @@ import androidx.compose.foundation.background
|
|
|
4
4
|
import androidx.compose.foundation.border
|
|
5
5
|
import androidx.compose.foundation.clickable
|
|
6
6
|
import androidx.compose.foundation.interaction.MutableInteractionSource
|
|
7
|
-
import androidx.compose.foundation.layout
|
|
8
|
-
import androidx.compose.foundation.layout.Box
|
|
9
|
-
import androidx.compose.foundation.layout.Column
|
|
10
|
-
import androidx.compose.foundation.layout.Row
|
|
11
|
-
import androidx.compose.foundation.layout.Spacer
|
|
12
|
-
import androidx.compose.foundation.layout.aspectRatio
|
|
13
|
-
import androidx.compose.foundation.layout.fillMaxWidth
|
|
14
|
-
import androidx.compose.foundation.layout.height
|
|
15
|
-
import androidx.compose.foundation.layout.offset
|
|
16
|
-
import androidx.compose.foundation.layout.padding
|
|
17
|
-
import androidx.compose.foundation.layout.width
|
|
7
|
+
import androidx.compose.foundation.layout.*
|
|
18
8
|
import androidx.compose.foundation.lazy.LazyColumn
|
|
19
9
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
|
20
|
-
import androidx.compose.runtime
|
|
21
|
-
import androidx.compose.runtime.LaunchedEffect
|
|
22
|
-
import androidx.compose.runtime.MutableState
|
|
23
|
-
import androidx.compose.runtime.getValue
|
|
24
|
-
import androidx.compose.runtime.mutableStateOf
|
|
25
|
-
import androidx.compose.runtime.remember
|
|
26
|
-
import androidx.compose.runtime.setValue
|
|
10
|
+
import androidx.compose.runtime.*
|
|
27
11
|
import androidx.compose.ui.Alignment
|
|
28
12
|
import androidx.compose.ui.Modifier
|
|
29
13
|
import androidx.compose.ui.draw.clip
|
|
14
|
+
import androidx.compose.ui.platform.LocalDensity
|
|
30
15
|
import androidx.compose.ui.text.TextLayoutResult
|
|
16
|
+
import androidx.compose.ui.unit.Dp
|
|
31
17
|
import androidx.compose.ui.unit.dp
|
|
32
|
-
import vn.momo.kits.
|
|
33
|
-
import vn.momo.kits.const.Radius
|
|
34
|
-
import vn.momo.kits.const.Spacing
|
|
18
|
+
import vn.momo.kits.application.AppLanguage
|
|
35
19
|
import vn.momo.kits.application.IsShowBaseLineDebug
|
|
36
|
-
import vn.momo.kits.const
|
|
37
|
-
import vn.momo.kits.const.Typography
|
|
20
|
+
import vn.momo.kits.const.*
|
|
38
21
|
import vn.momo.kits.modifier.conditional
|
|
39
22
|
import vn.momo.kits.modifier.setAutomationId
|
|
40
|
-
import androidx.compose.ui.platform.LocalDensity
|
|
41
|
-
import androidx.compose.ui.unit.Dp
|
|
42
|
-
import vn.momo.kits.application.AppLanguage
|
|
43
23
|
import kotlin.math.min
|
|
44
24
|
|
|
45
25
|
data class PopupAction(
|
|
@@ -55,9 +35,8 @@ enum class PopupActionDirection {
|
|
|
55
35
|
|
|
56
36
|
private fun heightForLines(
|
|
57
37
|
layout: TextLayoutResult,
|
|
58
|
-
targetLines: Float
|
|
59
38
|
): Float {
|
|
60
|
-
val clampedLines =
|
|
39
|
+
val clampedLines = (8.5f).coerceAtLeast(1f)
|
|
61
40
|
val wholeLines = kotlin.math.floor(clampedLines).toInt()
|
|
62
41
|
val fractionalPart = clampedLines - wholeLines
|
|
63
42
|
|
|
@@ -111,7 +90,7 @@ fun PopupNotify(
|
|
|
111
90
|
layoutResult.value?.let { v ->
|
|
112
91
|
// cap visible height at ~8.5 lines
|
|
113
92
|
val textPx = v.size.height.toFloat()
|
|
114
|
-
val capPx = heightForLines(v
|
|
93
|
+
val capPx = heightForLines(v)
|
|
115
94
|
|
|
116
95
|
isScroll = textPx >= capPx
|
|
117
96
|
scrollHeight = with(density) { min(textPx, capPx).toDp() }
|
|
@@ -236,7 +215,7 @@ fun PopupNotify(
|
|
|
236
215
|
}
|
|
237
216
|
|
|
238
217
|
@Composable
|
|
239
|
-
fun BuildAction(
|
|
218
|
+
internal fun BuildAction(
|
|
240
219
|
primary: PopupAction?,
|
|
241
220
|
secondary: PopupAction?,
|
|
242
221
|
buttonDirection: PopupActionDirection = PopupActionDirection.ROW,
|
|
@@ -246,14 +225,14 @@ fun BuildAction(
|
|
|
246
225
|
when (buttonDirection) {
|
|
247
226
|
PopupActionDirection.AUTO -> {
|
|
248
227
|
if (secondary != null && (secondary.title.length > 12 || primary?.title?.length!! > 12)) {
|
|
249
|
-
|
|
228
|
+
RenderColumn(
|
|
250
229
|
secondary = secondary,
|
|
251
230
|
onAction = onAction,
|
|
252
231
|
closeAction = closeAction,
|
|
253
232
|
primary = primary
|
|
254
233
|
)
|
|
255
234
|
} else {
|
|
256
|
-
|
|
235
|
+
RenderRow(
|
|
257
236
|
secondary = secondary,
|
|
258
237
|
onAction = onAction,
|
|
259
238
|
closeAction = closeAction,
|
|
@@ -262,14 +241,14 @@ fun BuildAction(
|
|
|
262
241
|
}
|
|
263
242
|
}
|
|
264
243
|
|
|
265
|
-
PopupActionDirection.ROW ->
|
|
244
|
+
PopupActionDirection.ROW -> RenderRow(
|
|
266
245
|
secondary = secondary,
|
|
267
246
|
onAction = onAction,
|
|
268
247
|
closeAction = closeAction,
|
|
269
248
|
primary = primary
|
|
270
249
|
)
|
|
271
250
|
|
|
272
|
-
else ->
|
|
251
|
+
else -> RenderColumn(
|
|
273
252
|
secondary = secondary,
|
|
274
253
|
onAction = onAction,
|
|
275
254
|
closeAction = closeAction,
|
|
@@ -279,7 +258,7 @@ fun BuildAction(
|
|
|
279
258
|
}
|
|
280
259
|
|
|
281
260
|
@Composable
|
|
282
|
-
fun
|
|
261
|
+
internal fun RenderRow(
|
|
283
262
|
secondary: PopupAction?,
|
|
284
263
|
closeAction: MutableState<String>,
|
|
285
264
|
primary: PopupAction?,
|
|
@@ -316,7 +295,7 @@ fun renderRow(
|
|
|
316
295
|
}
|
|
317
296
|
|
|
318
297
|
@Composable
|
|
319
|
-
fun
|
|
298
|
+
internal fun RenderColumn(
|
|
320
299
|
secondary: PopupAction?,
|
|
321
300
|
closeAction: MutableState<String>,
|
|
322
301
|
primary: PopupAction?,
|
|
@@ -4,13 +4,7 @@ import androidx.compose.foundation.background
|
|
|
4
4
|
import androidx.compose.foundation.border
|
|
5
5
|
import androidx.compose.foundation.clickable
|
|
6
6
|
import androidx.compose.foundation.interaction.MutableInteractionSource
|
|
7
|
-
import androidx.compose.foundation.layout
|
|
8
|
-
import androidx.compose.foundation.layout.Column
|
|
9
|
-
import androidx.compose.foundation.layout.aspectRatio
|
|
10
|
-
import androidx.compose.foundation.layout.fillMaxWidth
|
|
11
|
-
import androidx.compose.foundation.layout.height
|
|
12
|
-
import androidx.compose.foundation.layout.padding
|
|
13
|
-
import androidx.compose.foundation.layout.width
|
|
7
|
+
import androidx.compose.foundation.layout.*
|
|
14
8
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
|
15
9
|
import androidx.compose.runtime.Composable
|
|
16
10
|
import androidx.compose.runtime.remember
|
|
@@ -19,10 +13,10 @@ import androidx.compose.ui.Modifier
|
|
|
19
13
|
import androidx.compose.ui.draw.clip
|
|
20
14
|
import androidx.compose.ui.layout.ContentScale
|
|
21
15
|
import androidx.compose.ui.unit.dp
|
|
22
|
-
import vn.momo.kits.const.AppTheme
|
|
23
|
-
import vn.momo.kits.const.Radius
|
|
24
16
|
import vn.momo.kits.application.IsShowBaseLineDebug
|
|
17
|
+
import vn.momo.kits.const.AppTheme
|
|
25
18
|
import vn.momo.kits.const.Colors
|
|
19
|
+
import vn.momo.kits.const.Radius
|
|
26
20
|
import vn.momo.kits.const.Spacing
|
|
27
21
|
import vn.momo.kits.modifier.conditional
|
|
28
22
|
import vn.momo.kits.modifier.setAutomationId
|
|
@@ -18,8 +18,6 @@ import vn.momo.kits.application.IsShowBaseLineDebug
|
|
|
18
18
|
import vn.momo.kits.const.*
|
|
19
19
|
import vn.momo.kits.modifier.conditional
|
|
20
20
|
|
|
21
|
-
// ─── Data model ───────────────────────────────────────────────────────────────
|
|
22
|
-
|
|
23
21
|
data class ProgressInfoItem(
|
|
24
22
|
val title: String,
|
|
25
23
|
val description: String? = null,
|
|
@@ -29,25 +27,6 @@ enum class ProgressInfoSize { Small, Large }
|
|
|
29
27
|
|
|
30
28
|
enum class ProgressInfoAlign { Left, Right, Center, Stretch }
|
|
31
29
|
|
|
32
|
-
// ─── Public entry-point ───────────────────────────────────────────────────────
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Display-only step progress indicator migrated from the React Native ProgressInfo component.
|
|
36
|
-
*
|
|
37
|
-
* @param steps Ordered list of steps; each has a [ProgressInfoItem.title] and an
|
|
38
|
-
* optional [ProgressInfoItem.description].
|
|
39
|
-
* @param horizontal When `true` renders steps in a horizontal row with connector lines;
|
|
40
|
-
* when `false` (default) renders a vertical column.
|
|
41
|
-
* @param size Icon diameter: [ProgressInfoSize.Small] = 16 dp,
|
|
42
|
-
* [ProgressInfoSize.Large] = 24 dp (default).
|
|
43
|
-
* @param useNumber Show the 1-based step index inside the icon instead of the default dot.
|
|
44
|
-
* @param align Alignment of icon + text for the horizontal variant.
|
|
45
|
-
* @param showTitle Whether step titles are rendered (default `true`).
|
|
46
|
-
* @param showDescription Whether step descriptions are rendered (default `true`).
|
|
47
|
-
* @param customIcon Icon source key rendered inside each step circle (overrides the dot;
|
|
48
|
-
* itself overridden by [useNumber]).
|
|
49
|
-
* @param modifier Modifier applied to the root layout.
|
|
50
|
-
*/
|
|
51
30
|
@Composable
|
|
52
31
|
fun ProgressInfo(
|
|
53
32
|
steps: List<ProgressInfoItem>,
|
|
@@ -84,8 +63,6 @@ fun ProgressInfo(
|
|
|
84
63
|
}
|
|
85
64
|
}
|
|
86
65
|
|
|
87
|
-
// ─── Horizontal variant ───────────────────────────────────────────────────────
|
|
88
|
-
|
|
89
66
|
@Composable
|
|
90
67
|
private fun ProgressInfoHorizontal(
|
|
91
68
|
steps: List<ProgressInfoItem>,
|
|
@@ -190,7 +167,6 @@ private fun ProgressInfoHorizontal(
|
|
|
190
167
|
}
|
|
191
168
|
}
|
|
192
169
|
|
|
193
|
-
// ─── Vertical variant ─────────────────────────────────────────────────────────
|
|
194
170
|
|
|
195
171
|
@Composable
|
|
196
172
|
private fun ProgressInfoVertical(
|
|
@@ -275,8 +251,6 @@ private fun ProgressInfoVertical(
|
|
|
275
251
|
}
|
|
276
252
|
}
|
|
277
253
|
|
|
278
|
-
// ─── Step icon ────────────────────────────────────────────────────────────────
|
|
279
|
-
|
|
280
254
|
@Composable
|
|
281
255
|
private fun ProgressInfoStepIcon(
|
|
282
256
|
index: Int,
|
|
@@ -326,8 +300,6 @@ private fun ProgressInfoStepIcon(
|
|
|
326
300
|
}
|
|
327
301
|
}
|
|
328
302
|
|
|
329
|
-
// ─── Horizontal connector line ────────────────────────────────────────────────
|
|
330
|
-
|
|
331
303
|
@Composable
|
|
332
304
|
private fun ProgressInfoHorizontalLine(modifier: Modifier = Modifier) {
|
|
333
305
|
Box(
|
|
@@ -1,26 +1,15 @@
|
|
|
1
1
|
package vn.momo.kits.components
|
|
2
2
|
|
|
3
3
|
import androidx.compose.foundation.border
|
|
4
|
-
import androidx.compose.foundation.
|
|
5
|
-
import androidx.compose.foundation.interaction.MutableInteractionSource
|
|
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.padding
|
|
10
|
-
import androidx.compose.foundation.layout.size
|
|
4
|
+
import androidx.compose.foundation.layout.*
|
|
11
5
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
|
12
6
|
import androidx.compose.runtime.Composable
|
|
13
|
-
import androidx.compose.runtime.remember
|
|
14
7
|
import androidx.compose.ui.Alignment
|
|
15
8
|
import androidx.compose.ui.Modifier
|
|
16
9
|
import androidx.compose.ui.draw.clip
|
|
17
10
|
import androidx.compose.ui.unit.dp
|
|
18
11
|
import vn.momo.kits.application.IsShowBaseLineDebug
|
|
19
|
-
import vn.momo.kits.const
|
|
20
|
-
import vn.momo.kits.const.Colors
|
|
21
|
-
import vn.momo.kits.const.Radius
|
|
22
|
-
import vn.momo.kits.const.Spacing
|
|
23
|
-
import vn.momo.kits.const.Typography
|
|
12
|
+
import vn.momo.kits.const.*
|
|
24
13
|
import vn.momo.kits.modifier.activeOpacityClickable
|
|
25
14
|
import vn.momo.kits.modifier.conditional
|
|
26
15
|
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
package vn.momo.kits.components
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
import androidx.compose.animation.core
|
|
6
|
-
import androidx.compose.animation.core.infiniteRepeatable
|
|
7
|
-
import androidx.compose.animation.core.rememberInfiniteTransition
|
|
8
|
-
import androidx.compose.animation.core.tween
|
|
3
|
+
import vn.momo.kits.modifier.InternalApi
|
|
4
|
+
|
|
5
|
+
import androidx.compose.animation.core.*
|
|
9
6
|
import androidx.compose.foundation.background
|
|
10
7
|
import androidx.compose.foundation.border
|
|
11
8
|
import androidx.compose.foundation.layout.Box
|
|
@@ -22,21 +19,17 @@ import vn.momo.kits.application.IsShowBaseLineDebug
|
|
|
22
19
|
import vn.momo.kits.const.Colors
|
|
23
20
|
import vn.momo.kits.modifier.conditional
|
|
24
21
|
|
|
25
|
-
// Pre-computed shimmer colors to avoid repeated list creation
|
|
26
22
|
private val shimmerColors = listOf(
|
|
27
23
|
Colors.black_05,
|
|
28
24
|
Colors.black_03,
|
|
29
25
|
Colors.black_05,
|
|
30
26
|
)
|
|
31
|
-
|
|
32
|
-
// Constants for better performance
|
|
33
27
|
private const val SHADOW_BRUSH_PERCENTAGE = 0.6f
|
|
34
28
|
private const val DEFAULT_DURATION_MILLIS = 1000
|
|
35
29
|
|
|
36
30
|
@Composable
|
|
37
31
|
fun Skeleton() {
|
|
38
32
|
BoxWithConstraints(modifier = Modifier.fillMaxSize()) {
|
|
39
|
-
// Memoize width calculation
|
|
40
33
|
val maxWidthValue = remember(maxWidth) { maxWidth.value.toInt() }
|
|
41
34
|
|
|
42
35
|
Box(
|
|
@@ -52,6 +45,7 @@ fun Skeleton() {
|
|
|
52
45
|
}
|
|
53
46
|
|
|
54
47
|
@Composable
|
|
48
|
+
@InternalApi
|
|
55
49
|
fun Modifier.shimmerLoadingAnimation(
|
|
56
50
|
maxWidth: Int,
|
|
57
51
|
angleOfAxisY: Float = 0f,
|
|
@@ -4,25 +4,12 @@ import androidx.compose.animation.core.animateFloatAsState
|
|
|
4
4
|
import androidx.compose.animation.core.spring
|
|
5
5
|
import androidx.compose.foundation.background
|
|
6
6
|
import androidx.compose.foundation.border
|
|
7
|
-
import androidx.compose.foundation.layout
|
|
8
|
-
import androidx.compose.foundation.layout.BoxWithConstraints
|
|
9
|
-
import androidx.compose.foundation.layout.fillMaxWidth
|
|
10
|
-
import androidx.compose.foundation.layout.height
|
|
11
|
-
import androidx.compose.foundation.layout.offset
|
|
12
|
-
import androidx.compose.foundation.layout.padding
|
|
13
|
-
import androidx.compose.foundation.layout.size
|
|
14
|
-
import androidx.compose.foundation.layout.width
|
|
7
|
+
import androidx.compose.foundation.layout.*
|
|
15
8
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
|
16
|
-
import androidx.compose.runtime
|
|
17
|
-
import androidx.compose.runtime.getValue
|
|
18
|
-
import androidx.compose.runtime.mutableFloatStateOf
|
|
19
|
-
import androidx.compose.runtime.mutableStateOf
|
|
20
|
-
import androidx.compose.runtime.remember
|
|
21
|
-
import androidx.compose.runtime.setValue
|
|
9
|
+
import androidx.compose.runtime.*
|
|
22
10
|
import androidx.compose.ui.Alignment
|
|
23
11
|
import androidx.compose.ui.Modifier
|
|
24
12
|
import androidx.compose.ui.draw.clip
|
|
25
|
-
import androidx.compose.ui.graphics.Color
|
|
26
13
|
import androidx.compose.ui.input.pointer.pointerInput
|
|
27
14
|
import androidx.compose.ui.layout.onGloballyPositioned
|
|
28
15
|
import androidx.compose.ui.platform.LocalDensity
|
|
@@ -30,19 +17,12 @@ import androidx.compose.ui.text.style.TextAlign
|
|
|
30
17
|
import androidx.compose.ui.unit.IntOffset
|
|
31
18
|
import androidx.compose.ui.unit.dp
|
|
32
19
|
import vn.momo.kits.application.IsShowBaseLineDebug
|
|
33
|
-
import vn.momo.kits.const
|
|
34
|
-
import vn.momo.kits.const.Colors
|
|
35
|
-
import vn.momo.kits.const.Radius
|
|
36
|
-
import vn.momo.kits.const.Spacing
|
|
37
|
-
import vn.momo.kits.const.Typography
|
|
20
|
+
import vn.momo.kits.const.*
|
|
38
21
|
import vn.momo.kits.modifier.conditional
|
|
39
|
-
import vn.momo.kits.modifier.shadow
|
|
40
22
|
import kotlin.math.abs
|
|
41
23
|
import kotlin.math.min
|
|
42
24
|
import kotlin.math.roundToInt
|
|
43
25
|
|
|
44
|
-
// ── Design constants ─────────────────────────────────────────────────────────
|
|
45
|
-
|
|
46
26
|
private val THUMB_SIZE = 20.dp
|
|
47
27
|
private val THUMB_BORDER = 3.dp
|
|
48
28
|
private val TRACK_HEIGHT = 4.dp
|
|
@@ -50,15 +30,10 @@ private val LABEL_PAD_H = Spacing.XS
|
|
|
50
30
|
private val LABEL_PAD_V = Spacing.XXS
|
|
51
31
|
private val LABEL_GAP = Spacing.XS // space between label and thumb top
|
|
52
32
|
|
|
53
|
-
// ── Pure helpers (mirrors RN helpers.ts) ─────────────────────────────────────
|
|
54
33
|
|
|
55
34
|
private fun clamp(value: Float, min: Float, max: Float): Float =
|
|
56
35
|
min(kotlin.math.max(value, min), max)
|
|
57
36
|
|
|
58
|
-
/**
|
|
59
|
-
* Converts a raw touch position into a snapped slider value.
|
|
60
|
-
* Direct port of RN getValueForPosition().
|
|
61
|
-
*/
|
|
62
37
|
private fun getValueForPosition(
|
|
63
38
|
positionInView: Float,
|
|
64
39
|
containerWidth: Float,
|
|
@@ -2,21 +2,12 @@ package vn.momo.kits.components
|
|
|
2
2
|
|
|
3
3
|
import androidx.compose.foundation.background
|
|
4
4
|
import androidx.compose.foundation.border
|
|
5
|
-
import androidx.compose.foundation.layout
|
|
6
|
-
import androidx.compose.foundation.layout.Row
|
|
7
|
-
import androidx.compose.foundation.layout.defaultMinSize
|
|
8
|
-
import androidx.compose.foundation.layout.height
|
|
9
|
-
import androidx.compose.foundation.layout.padding
|
|
10
|
-
import androidx.compose.foundation.layout.size
|
|
5
|
+
import androidx.compose.foundation.layout.*
|
|
11
6
|
import androidx.compose.foundation.shape.CircleShape
|
|
12
7
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
|
13
8
|
import androidx.compose.foundation.text.BasicTextField
|
|
14
9
|
import androidx.compose.foundation.text.KeyboardOptions
|
|
15
|
-
import androidx.compose.runtime
|
|
16
|
-
import androidx.compose.runtime.getValue
|
|
17
|
-
import androidx.compose.runtime.mutableStateOf
|
|
18
|
-
import androidx.compose.runtime.remember
|
|
19
|
-
import androidx.compose.runtime.setValue
|
|
10
|
+
import androidx.compose.runtime.*
|
|
20
11
|
import androidx.compose.ui.Alignment
|
|
21
12
|
import androidx.compose.ui.Modifier
|
|
22
13
|
import androidx.compose.ui.graphics.Color
|
|
@@ -27,18 +18,10 @@ import androidx.compose.ui.unit.Dp
|
|
|
27
18
|
import androidx.compose.ui.unit.dp
|
|
28
19
|
import androidx.compose.ui.unit.sp
|
|
29
20
|
import vn.momo.kits.application.IsShowBaseLineDebug
|
|
30
|
-
import vn.momo.kits.const
|
|
31
|
-
import vn.momo.kits.const.Colors
|
|
32
|
-
import vn.momo.kits.const.Radius
|
|
33
|
-
import vn.momo.kits.const.Spacing
|
|
34
|
-
import vn.momo.kits.const.scaleSize
|
|
21
|
+
import vn.momo.kits.const.*
|
|
35
22
|
import vn.momo.kits.modifier.activeOpacityClickable
|
|
36
23
|
import vn.momo.kits.modifier.conditional
|
|
37
24
|
|
|
38
|
-
// ---------------------------------------------------------------------------
|
|
39
|
-
// Size variant
|
|
40
|
-
// ---------------------------------------------------------------------------
|
|
41
|
-
|
|
42
25
|
enum class StepperSize {
|
|
43
26
|
LARGE,
|
|
44
27
|
SMALL
|
|
@@ -66,10 +49,6 @@ private val stepperSizeSpecs: Map<StepperSize, StepperSizeSpec> = mapOf(
|
|
|
66
49
|
),
|
|
67
50
|
)
|
|
68
51
|
|
|
69
|
-
// ---------------------------------------------------------------------------
|
|
70
|
-
// Private sub-composables
|
|
71
|
-
// ---------------------------------------------------------------------------
|
|
72
|
-
|
|
73
52
|
@Composable
|
|
74
53
|
private fun StepperButton(
|
|
75
54
|
sign: String = "+",
|
|
@@ -157,26 +136,6 @@ private fun StepperNumberView(
|
|
|
157
136
|
}
|
|
158
137
|
}
|
|
159
138
|
|
|
160
|
-
// ---------------------------------------------------------------------------
|
|
161
|
-
// Public API
|
|
162
|
-
// ---------------------------------------------------------------------------
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* Stepper — migrated from React Native Stepper.
|
|
166
|
-
*
|
|
167
|
-
* Layout: [− button] [value display] [+ button]
|
|
168
|
-
*
|
|
169
|
-
* @param defaultValue Initial value (default 0). Clamped to [min]..[max] on first composition.
|
|
170
|
-
* @param min Minimum allowed value (default 0). Minus button is auto-disabled at this bound.
|
|
171
|
-
* @param max Maximum allowed value (default 100). Plus button is auto-disabled at this bound.
|
|
172
|
-
* @param step Amount added/subtracted per button press (default 1).
|
|
173
|
-
* @param disabled Disable state. Pass `true` to disable everything, or a [BooleanArray] of
|
|
174
|
-
* size >= 2 where index 0 = minus button, index 1 = plus button.
|
|
175
|
-
* @param size Visual size variant: [StepperSize.LARGE] (default) or [StepperSize.SMALL].
|
|
176
|
-
* @param editable When `true` the number display becomes a direct keyboard input (default false).
|
|
177
|
-
* @param onValueChange Callback invoked with the new [Int] value on every change.
|
|
178
|
-
* @param modifier Modifier applied to the root [Row].
|
|
179
|
-
*/
|
|
180
139
|
@Composable
|
|
181
140
|
fun Stepper(
|
|
182
141
|
defaultValue: Int = 0,
|
|
@@ -203,17 +162,19 @@ fun Stepper(
|
|
|
203
162
|
val disabledPlus: Boolean
|
|
204
163
|
val disabledNumber: Boolean
|
|
205
164
|
|
|
206
|
-
when {
|
|
207
|
-
|
|
165
|
+
when (disabled) {
|
|
166
|
+
is BooleanArray if disabled.size >= 2 -> {
|
|
208
167
|
disabledMinus = disabled[0]
|
|
209
168
|
disabledPlus = disabled[1]
|
|
210
169
|
disabledNumber = disabled[0] && disabled[1]
|
|
211
170
|
}
|
|
212
|
-
|
|
171
|
+
|
|
172
|
+
is Boolean if disabled -> {
|
|
213
173
|
disabledMinus = true
|
|
214
174
|
disabledPlus = true
|
|
215
175
|
disabledNumber = true
|
|
216
176
|
}
|
|
177
|
+
|
|
217
178
|
else -> {
|
|
218
179
|
disabledMinus = false
|
|
219
180
|
disabledPlus = false
|
|
@@ -2,16 +2,7 @@ package vn.momo.kits.components
|
|
|
2
2
|
|
|
3
3
|
import androidx.compose.foundation.background
|
|
4
4
|
import androidx.compose.foundation.border
|
|
5
|
-
import androidx.compose.foundation.layout
|
|
6
|
-
import androidx.compose.foundation.layout.Box
|
|
7
|
-
import androidx.compose.foundation.layout.Column
|
|
8
|
-
import androidx.compose.foundation.layout.Row
|
|
9
|
-
import androidx.compose.foundation.layout.Spacer
|
|
10
|
-
import androidx.compose.foundation.layout.fillMaxWidth
|
|
11
|
-
import androidx.compose.foundation.layout.height
|
|
12
|
-
import androidx.compose.foundation.layout.padding
|
|
13
|
-
import androidx.compose.foundation.layout.size
|
|
14
|
-
import androidx.compose.foundation.layout.width
|
|
5
|
+
import androidx.compose.foundation.layout.*
|
|
15
6
|
import androidx.compose.foundation.shape.CircleShape
|
|
16
7
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
|
17
8
|
import androidx.compose.runtime.Composable
|
|
@@ -23,15 +14,10 @@ import androidx.compose.ui.text.style.TextAlign
|
|
|
23
14
|
import androidx.compose.ui.unit.Dp
|
|
24
15
|
import androidx.compose.ui.unit.dp
|
|
25
16
|
import vn.momo.kits.application.IsShowBaseLineDebug
|
|
26
|
-
import vn.momo.kits.const
|
|
27
|
-
import vn.momo.kits.const.Colors
|
|
28
|
-
import vn.momo.kits.const.Radius
|
|
29
|
-
import vn.momo.kits.const.Spacing
|
|
30
|
-
import vn.momo.kits.const.Typography
|
|
17
|
+
import vn.momo.kits.const.*
|
|
31
18
|
import vn.momo.kits.modifier.activeOpacityClickable
|
|
32
19
|
import vn.momo.kits.modifier.conditional
|
|
33
20
|
|
|
34
|
-
// ─── Data model ────────────────────────────────────────────────────────────────
|
|
35
21
|
|
|
36
22
|
data class StepItem(
|
|
37
23
|
val title: String,
|
|
@@ -40,13 +26,11 @@ data class StepItem(
|
|
|
40
26
|
val time: String? = null,
|
|
41
27
|
)
|
|
42
28
|
|
|
43
|
-
// ─── Enumerations ──────────────────────────────────────────────────────────────
|
|
44
29
|
|
|
45
30
|
enum class StepsSize { SMALL, LARGE }
|
|
46
31
|
|
|
47
32
|
enum class StepsAlign { LEFT, RIGHT, CENTER, STRETCH }
|
|
48
33
|
|
|
49
|
-
// ─── Internal status ───────────────────────────────────────────────────────────
|
|
50
34
|
|
|
51
35
|
private enum class StepStatus { INCOMPLETE, CURRENT, COMPLETED, ERROR, DISABLED }
|
|
52
36
|
|
|
@@ -63,7 +47,6 @@ private fun resolveStatus(
|
|
|
63
47
|
else -> StepStatus.INCOMPLETE
|
|
64
48
|
}
|
|
65
49
|
|
|
66
|
-
// ─── Color helpers ─────────────────────────────────────────────────────────────
|
|
67
50
|
|
|
68
51
|
@Composable
|
|
69
52
|
private fun resolveIconBgAndBorder(status: StepStatus): Pair<Color, Color> {
|
|
@@ -91,8 +74,6 @@ private fun resolveTitleColor(status: StepStatus): Color {
|
|
|
91
74
|
}
|
|
92
75
|
}
|
|
93
76
|
|
|
94
|
-
// ─── Step bubble ───────────────────────────────────────────────────────────────
|
|
95
|
-
|
|
96
77
|
@Composable
|
|
97
78
|
private fun StepBubble(
|
|
98
79
|
index: Int,
|
|
@@ -153,7 +134,6 @@ private fun StepBubble(
|
|
|
153
134
|
}
|
|
154
135
|
}
|
|
155
136
|
|
|
156
|
-
// ─── Horizontal layout ─────────────────────────────────────────────────────────
|
|
157
137
|
|
|
158
138
|
@Composable
|
|
159
139
|
private fun StepsHorizontal(
|
|
@@ -228,7 +208,7 @@ private fun StepsHorizontal(
|
|
|
228
208
|
modifier = Modifier
|
|
229
209
|
.weight(1f)
|
|
230
210
|
.then(
|
|
231
|
-
if (clickable) Modifier.activeOpacityClickable { onPress
|
|
211
|
+
if (clickable) Modifier.activeOpacityClickable { onPress.invoke(item, index) }
|
|
232
212
|
else Modifier
|
|
233
213
|
),
|
|
234
214
|
horizontalAlignment = colAlign,
|
|
@@ -318,7 +298,6 @@ private fun StepsHorizontal(
|
|
|
318
298
|
}
|
|
319
299
|
}
|
|
320
300
|
|
|
321
|
-
// ─── Vertical layout ───────────────────────────────────────────────────────────
|
|
322
301
|
|
|
323
302
|
@Composable
|
|
324
303
|
private fun StepsVertical(
|
|
@@ -362,7 +341,7 @@ private fun StepsVertical(
|
|
|
362
341
|
modifier = Modifier
|
|
363
342
|
.fillMaxWidth()
|
|
364
343
|
.then(
|
|
365
|
-
if (clickable) Modifier.activeOpacityClickable { onPress
|
|
344
|
+
if (clickable) Modifier.activeOpacityClickable { onPress.invoke(item, index) }
|
|
366
345
|
else Modifier
|
|
367
346
|
),
|
|
368
347
|
) {
|
|
@@ -5,12 +5,7 @@ import androidx.compose.animation.fadeIn
|
|
|
5
5
|
import androidx.compose.animation.fadeOut
|
|
6
6
|
import androidx.compose.foundation.background
|
|
7
7
|
import androidx.compose.foundation.border
|
|
8
|
-
import androidx.compose.foundation.layout
|
|
9
|
-
import androidx.compose.foundation.layout.Spacer
|
|
10
|
-
import androidx.compose.foundation.layout.fillMaxWidth
|
|
11
|
-
import androidx.compose.foundation.layout.padding
|
|
12
|
-
import androidx.compose.foundation.layout.size
|
|
13
|
-
import androidx.compose.foundation.layout.width
|
|
8
|
+
import androidx.compose.foundation.layout.*
|
|
14
9
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
|
15
10
|
import androidx.compose.runtime.Composable
|
|
16
11
|
import androidx.compose.runtime.remember
|
|
@@ -23,11 +18,7 @@ import androidx.compose.ui.text.font.FontWeight
|
|
|
23
18
|
import androidx.compose.ui.text.withStyle
|
|
24
19
|
import androidx.compose.ui.unit.dp
|
|
25
20
|
import vn.momo.kits.application.IsShowBaseLineDebug
|
|
26
|
-
import vn.momo.kits.const
|
|
27
|
-
import vn.momo.kits.const.Colors
|
|
28
|
-
import vn.momo.kits.const.Radius
|
|
29
|
-
import vn.momo.kits.const.Spacing
|
|
30
|
-
import vn.momo.kits.const.Typography
|
|
21
|
+
import vn.momo.kits.const.*
|
|
31
22
|
import vn.momo.kits.modifier.activeOpacityClickable
|
|
32
23
|
import vn.momo.kits.modifier.conditional
|
|
33
24
|
import vn.momo.kits.modifier.shadow
|
|
@@ -5,14 +5,7 @@ import androidx.compose.animation.core.tween
|
|
|
5
5
|
import androidx.compose.foundation.background
|
|
6
6
|
import androidx.compose.foundation.border
|
|
7
7
|
import androidx.compose.foundation.gestures.detectHorizontalDragGestures
|
|
8
|
-
import androidx.compose.foundation.layout
|
|
9
|
-
import androidx.compose.foundation.layout.Column
|
|
10
|
-
import androidx.compose.foundation.layout.Row
|
|
11
|
-
import androidx.compose.foundation.layout.fillMaxHeight
|
|
12
|
-
import androidx.compose.foundation.layout.fillMaxWidth
|
|
13
|
-
import androidx.compose.foundation.layout.height
|
|
14
|
-
import androidx.compose.foundation.layout.offset
|
|
15
|
-
import androidx.compose.foundation.layout.width
|
|
8
|
+
import androidx.compose.foundation.layout.*
|
|
16
9
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
|
17
10
|
import androidx.compose.runtime.Composable
|
|
18
11
|
import androidx.compose.runtime.remember
|
|
@@ -30,8 +23,6 @@ import kotlinx.coroutines.launch
|
|
|
30
23
|
import vn.momo.kits.application.IsShowBaseLineDebug
|
|
31
24
|
import vn.momo.kits.const.AppTheme
|
|
32
25
|
import vn.momo.kits.const.Colors
|
|
33
|
-
import vn.momo.kits.const.Radius
|
|
34
|
-
import vn.momo.kits.const.Spacing
|
|
35
26
|
import vn.momo.kits.const.Typography
|
|
36
27
|
import vn.momo.kits.modifier.activeOpacityClickable
|
|
37
28
|
import vn.momo.kits.modifier.conditional
|
|
@@ -98,13 +89,6 @@ fun Swipe(
|
|
|
98
89
|
}
|
|
99
90
|
}
|
|
100
91
|
|
|
101
|
-
fun close() {
|
|
102
|
-
scope.launch {
|
|
103
|
-
offsetX.animateTo(0f, tween(200))
|
|
104
|
-
onSwipeableClose()
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
92
|
Box(
|
|
109
93
|
modifier = modifier
|
|
110
94
|
.fillMaxWidth()
|