-
Notifications
You must be signed in to change notification settings - Fork 1
목표 생성, 편집 화면 구현 #54
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
목표 생성, 편집 화면 구현 #54
Changes from all commits
f54c3bf
f75d865
354c384
2d4e4b7
40df7b9
36d8457
cfb702f
38cf736
bd53b77
5024ce6
9a6f83d
f4ec675
5cec265
871786a
dc870ca
ceeb84d
a98a03e
74a16aa
14c1a5f
f714475
b276334
723377b
c20590a
c20fc1c
c09fd47
fa6f692
ece6582
049f96f
32c0ba0
16c5bb0
f081bf7
da82dbb
d501934
f054f5b
fac91eb
56159c5
067dbb8
1aedb5c
cc0f653
2783f89
4a7cf9e
18d5ee2
76f73b0
3834bb6
9cd1e81
c9e510a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,61 @@ | ||
| package com.twix.designsystem.components.common | ||
|
|
||
| import androidx.compose.animation.core.animateFloatAsState | ||
| import androidx.compose.animation.core.tween | ||
| import androidx.compose.foundation.background | ||
| import androidx.compose.foundation.border | ||
| import androidx.compose.foundation.clickable | ||
| import androidx.compose.foundation.layout.Box | ||
| import androidx.compose.foundation.layout.offset | ||
| import androidx.compose.foundation.layout.padding | ||
| import androidx.compose.foundation.layout.size | ||
| import androidx.compose.foundation.shape.CircleShape | ||
| import androidx.compose.foundation.shape.RoundedCornerShape | ||
| import androidx.compose.runtime.Composable | ||
| import androidx.compose.runtime.getValue | ||
| import androidx.compose.ui.Alignment | ||
| import androidx.compose.ui.Modifier | ||
| import androidx.compose.ui.draw.clip | ||
| import androidx.compose.ui.platform.LocalDensity | ||
| import androidx.compose.ui.unit.IntOffset | ||
| import androidx.compose.ui.unit.dp | ||
| import com.twix.designsystem.theme.CommonColor | ||
| import com.twix.designsystem.theme.GrayColor | ||
| import kotlin.math.roundToInt | ||
|
|
||
| @Composable | ||
| fun CommonSwitch( | ||
| modifier: Modifier = Modifier, | ||
| checked: Boolean, | ||
| onClick: (Boolean) -> Unit, | ||
| ) { | ||
| val density = LocalDensity.current | ||
| val minBound = with(density) { 0.dp.toPx() } | ||
| val maxBound = with(density) { 18.dp.toPx() } | ||
| val state by animateFloatAsState( | ||
| targetValue = if (checked) maxBound else minBound, | ||
| animationSpec = tween(durationMillis = 500), | ||
| label = "common switch", | ||
| ) | ||
|
|
||
| Box( | ||
| modifier = | ||
| modifier | ||
| .size(width = 48.dp, height = 30.dp) | ||
| .clip(RoundedCornerShape(999.dp)) | ||
| .background(if (checked) GrayColor.C500 else CommonColor.White) | ||
| .border(1.dp, GrayColor.C500, RoundedCornerShape(999.dp)) | ||
| .clickable(onClick = { onClick(!checked) }), | ||
| contentAlignment = Alignment.CenterStart, | ||
| ) { | ||
| Box( | ||
| modifier = | ||
| Modifier | ||
| .offset { IntOffset(state.roundToInt(), 0) } | ||
| .padding(4.dp) | ||
| .size(22.dp) | ||
| .clip(CircleShape) | ||
| .background(if (checked) CommonColor.White else GrayColor.C500), | ||
| ) | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,187 @@ | ||
| package com.twix.designsystem.components.dialog | ||
|
|
||
| import androidx.activity.compose.BackHandler | ||
| import androidx.compose.animation.AnimatedVisibility | ||
| import androidx.compose.animation.core.tween | ||
| import androidx.compose.animation.fadeIn | ||
| import androidx.compose.animation.fadeOut | ||
| import androidx.compose.foundation.BorderStroke | ||
| import androidx.compose.foundation.background | ||
| import androidx.compose.foundation.layout.Box | ||
| import androidx.compose.foundation.layout.Column | ||
| import androidx.compose.foundation.layout.ColumnScope | ||
| import androidx.compose.foundation.layout.Row | ||
| import androidx.compose.foundation.layout.Spacer | ||
| import androidx.compose.foundation.layout.fillMaxSize | ||
| import androidx.compose.foundation.layout.fillMaxWidth | ||
| import androidx.compose.foundation.layout.height | ||
| import androidx.compose.foundation.layout.padding | ||
| import androidx.compose.foundation.layout.width | ||
| import androidx.compose.foundation.shape.RoundedCornerShape | ||
| import androidx.compose.material3.Surface | ||
| import androidx.compose.runtime.Composable | ||
| import androidx.compose.ui.Alignment | ||
| import androidx.compose.ui.Modifier | ||
| import androidx.compose.ui.tooling.preview.Preview | ||
| import androidx.compose.ui.unit.dp | ||
| import com.twix.designsystem.components.button.AppButton | ||
| import com.twix.designsystem.components.text.AppText | ||
| import com.twix.designsystem.theme.CommonColor | ||
| import com.twix.designsystem.theme.DimmedColor | ||
| import com.twix.designsystem.theme.GrayColor | ||
| import com.twix.designsystem.theme.TwixTheme | ||
| import com.twix.domain.model.enums.AppTextStyle | ||
| import com.twix.ui.extension.noRippleClickable | ||
|
|
||
| @Composable | ||
| fun CommonDialog( | ||
| modifier: Modifier = Modifier, | ||
| visible: Boolean, | ||
| confirmText: String, | ||
| dismissText: String? = null, | ||
| onDismissRequest: () -> Unit, | ||
| content: @Composable ColumnScope.() -> Unit, | ||
| onConfirm: () -> Unit, | ||
| onDismiss: (() -> Unit)? = null, | ||
| ) { | ||
| BackHandler(enabled = visible) { onDismissRequest() } | ||
|
|
||
| Box( | ||
| modifier = | ||
| Modifier | ||
| .fillMaxSize() | ||
| .then(modifier), | ||
| contentAlignment = Alignment.Center, | ||
| ) { | ||
| DialogScrim(visible = visible, onDismissRequest = onDismissRequest) | ||
|
|
||
| DialogContent( | ||
| modifier = | ||
| Modifier | ||
| .padding(horizontal = 20.dp) | ||
| .fillMaxWidth(), | ||
| visible = visible, | ||
| confirmText = confirmText, | ||
| dismissText = dismissText, | ||
| content = content, | ||
| onConfirm = onConfirm, | ||
| onDismiss = onDismiss, | ||
| ) | ||
| } | ||
| } | ||
dogmania marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| @Composable | ||
| private fun DialogScrim( | ||
| visible: Boolean, | ||
| onDismissRequest: () -> Unit, | ||
| ) { | ||
| val fadeDuration = 160 | ||
|
|
||
| AnimatedVisibility( | ||
| visible = visible, | ||
| enter = fadeIn(animationSpec = tween(fadeDuration)), | ||
| exit = fadeOut(animationSpec = tween(fadeDuration)), | ||
| modifier = Modifier.fillMaxSize(), | ||
| ) { | ||
| Box( | ||
| modifier = | ||
| Modifier | ||
| .fillMaxSize() | ||
| .background(DimmedColor.D070) | ||
| .noRippleClickable(onClick = onDismissRequest), | ||
| ) | ||
| } | ||
| } | ||
|
|
||
| @Composable | ||
| private fun DialogContent( | ||
| modifier: Modifier, | ||
| visible: Boolean, | ||
| confirmText: String, | ||
| dismissText: String? = null, | ||
| content: @Composable ColumnScope.() -> Unit, | ||
| onConfirm: () -> Unit, | ||
| onDismiss: (() -> Unit)? = null, | ||
| ) { | ||
| val fadeDuration = 160 | ||
|
|
||
| AnimatedVisibility( | ||
| visible = visible, | ||
| enter = fadeIn(animationSpec = tween(fadeDuration)), | ||
| exit = fadeOut(animationSpec = tween(fadeDuration)), | ||
| ) { | ||
| Surface( | ||
| shape = RoundedCornerShape(20.dp), | ||
| color = CommonColor.White, | ||
| modifier = modifier, | ||
dogmania marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| ) { | ||
| Column( | ||
| modifier = | ||
| Modifier | ||
| .padding(horizontal = 20.dp) | ||
| .padding(top = 24.dp, bottom = 20.dp), | ||
| horizontalAlignment = Alignment.CenterHorizontally, | ||
| ) { | ||
| content() | ||
|
|
||
| Spacer(Modifier.height(24.dp)) | ||
|
|
||
| Row( | ||
| modifier = | ||
| Modifier | ||
| .fillMaxWidth() | ||
| .padding(vertical = 8.dp), | ||
| ) { | ||
| if (dismissText != null && onDismiss != null) { | ||
| AppButton( | ||
| modifier = Modifier.weight(1f), | ||
| text = dismissText, | ||
| textColor = GrayColor.C500, | ||
| backgroundColor = CommonColor.White, | ||
| border = BorderStroke(1.dp, GrayColor.C500), | ||
| onClick = onDismiss, | ||
| ) | ||
|
|
||
| Spacer(Modifier.width(8.dp)) | ||
| } | ||
|
|
||
| AppButton( | ||
| modifier = Modifier.weight(1f), | ||
| text = confirmText, | ||
| onClick = onConfirm, | ||
| ) | ||
| } | ||
| } | ||
| } | ||
| } | ||
| } | ||
|
|
||
| @Preview(showBackground = true, showSystemUi = true) | ||
| @Composable | ||
| private fun Preview() { | ||
| TwixTheme { | ||
| CommonDialog( | ||
| visible = true, | ||
| confirmText = "확인", | ||
| dismissText = "취소", | ||
| onDismissRequest = {}, | ||
| onConfirm = {}, | ||
| onDismiss = {}, | ||
| content = { | ||
| AppText( | ||
| text = "타이틀 텍스트", | ||
| style = AppTextStyle.T1, | ||
| color = GrayColor.C500, | ||
| ) | ||
|
|
||
| Spacer(Modifier.height(8.dp)) | ||
|
|
||
| AppText( | ||
| text = "내용 텍스트", | ||
| style = AppTextStyle.B2, | ||
| color = GrayColor.C400, | ||
| ) | ||
| }, | ||
| ) | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,106 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| package com.twix.designsystem.components.text_field | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.Arrangement | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.Box | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.Column | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.Row | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.Spacer | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.fillMaxWidth | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.height | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.padding | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.text.BasicTextField | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.text.KeyboardActions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.text.KeyboardOptions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.material3.HorizontalDivider | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.runtime.Composable | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.ui.Alignment | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.ui.Modifier | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.ui.unit.dp | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import com.twix.designsystem.components.text.AppText | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import com.twix.designsystem.theme.GrayColor | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import com.twix.designsystem.theme.LocalAppTypography | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import com.twix.designsystem.theme.toTextStyle | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import com.twix.domain.model.enums.AppTextStyle | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @Composable | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fun UnderlineTextField( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+25
to
+26
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 온보딩 닉네임 입력/날짜 선택 화면에서 trailing Icon이 필요한 경우가 있어서 추가해줄 수 있을까 ?
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 일단 피그마 보고 대충 추가해봤는데 trailing 파라미터에 Image 컴포저블 넘겨서 디테일한 padding이나 클릭 이벤트 처리하면 될 것 같아요! |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| modifier: Modifier = Modifier, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| value: String, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| placeHolder: String = "", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| textStyle: AppTextStyle = AppTextStyle.T2, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| enabled: Boolean = true, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| readOnly: Boolean = false, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| singleLine: Boolean = true, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| showTrailing: Boolean = false, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| maxLines: Int = 1, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| keyboardOptions: KeyboardOptions = KeyboardOptions.Default, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| keyboardActions: KeyboardActions = KeyboardActions.Default, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| trailing: (@Composable () -> Unit)? = null, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| onValueChange: (String) -> Unit, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| val typo = LocalAppTypography.current | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Column( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| modifier = | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Modifier | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .height(52.dp), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dogmania marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| horizontalAlignment = Alignment.Start, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| verticalArrangement = Arrangement.Center, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Spacer(Modifier.height(4.dp)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Box( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| modifier = | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| modifier | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .padding(horizontal = 8.dp, vertical = 10.dp), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| contentAlignment = Alignment.CenterStart, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| val shouldShowTrailing = trailing != null && showTrailing && value.isNotBlank() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if (value.isBlank()) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| AppText( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| text = placeHolder, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| style = textStyle, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| color = GrayColor.C200, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| modifier = | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Modifier | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .align(Alignment.CenterStart), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Row( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| modifier = | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Modifier | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .fillMaxWidth(), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| verticalAlignment = Alignment.CenterVertically, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| BasicTextField( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| value = value, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| textStyle = textStyle.toTextStyle(typo).copy(color = GrayColor.C500), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| onValueChange = onValueChange, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| enabled = enabled, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| readOnly = readOnly, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| singleLine = singleLine, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| maxLines = maxLines, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| keyboardOptions = keyboardOptions, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| keyboardActions = keyboardActions, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+71
to
+87
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 빈 값에서 입력 영역이 너무 좁아 탭이 어려울 수 있어요. 🛠️ 수정 제안 BasicTextField(
+ modifier = Modifier.weight(1f),
value = value,
textStyle = textStyle.toTextStyle(typo).copy(color = GrayColor.C500),
onValueChange = onValueChange,
enabled = enabled,
readOnly = readOnly,
singleLine = singleLine,
maxLines = maxLines,
keyboardOptions = keyboardOptions,
keyboardActions = keyboardActions,
)📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if (shouldShowTrailing) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Box( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| modifier = | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Modifier | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .padding(start = 10.dp), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| contentAlignment = Alignment.Center, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| trailing.invoke() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Spacer(Modifier.height(4.dp)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| HorizontalDivider(thickness = 1.dp, color = GrayColor.C500, modifier = modifier) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Uh oh!
There was an error while loading. Please reload this page.