From 57e00dae8c3aebf8d246186b0030c8d7233e7b67 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 7 Jun 2023 17:16:59 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../AddCustomTokenFloatingButton.kt | 7 +- .../legacy/compose/AddCustomTokenScreen.kt | 41 +--- .../ui/common/DetailsComposeElements.kt | 24 +- .../WallectSelectorScreenContent.kt | 15 +- .../ui/components/WelcomeScreenContent.kt | 17 +- .../com/tangem/core/ui/components/Buttons.kt | 205 ++++++++++++------ .../core/ui/components/SuccessScreen.kt | 14 +- .../wallet2/ui/CheckSeedPhraseScreen.kt | 7 +- .../wallet2/ui/ImportSeedPhraseScreen.kt | 7 +- .../presentation/wallet2/ui/IntroScreen.kt | 6 +- .../ui/SwapPermissionBottomSheetContent.kt | 4 +- .../feature/swap/ui/SwapScreenContent.kt | 4 +- 12 files changed, 178 insertions(+), 173 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/customtoken/impl/presentation/ui/components/AddCustomTokenFloatingButton.kt b/app/src/main/java/com/tangem/tap/features/customtoken/impl/presentation/ui/components/AddCustomTokenFloatingButton.kt index 618a46fd70..5011ca010c 100644 --- a/app/src/main/java/com/tangem/tap/features/customtoken/impl/presentation/ui/components/AddCustomTokenFloatingButton.kt +++ b/app/src/main/java/com/tangem/tap/features/customtoken/impl/presentation/ui/components/AddCustomTokenFloatingButton.kt @@ -5,12 +5,11 @@ import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.datasource.CollectionPreviewParameterProvider -import com.tangem.core.ui.components.PrimaryButtonIconLeft +import com.tangem.core.ui.components.PrimaryButtonIconStart import com.tangem.core.ui.res.TangemTheme import com.tangem.tap.features.customtoken.impl.presentation.models.AddCustomTokenFloatingButton import com.tangem.wallet.R @@ -25,13 +24,13 @@ import com.tangem.wallet.R */ @Composable internal fun AddCustomTokenFloatingButton(model: AddCustomTokenFloatingButton, modifier: Modifier = Modifier) { - PrimaryButtonIconLeft( + PrimaryButtonIconStart( modifier = modifier .imePadding() .padding(horizontal = TangemTheme.dimens.spacing16) .fillMaxWidth(), text = stringResource(id = R.string.common_add), - icon = painterResource(id = R.drawable.ic_plus_24), + iconResId = R.drawable.ic_plus_24, enabled = model.isEnabled, onClick = model.onClick, ) diff --git a/app/src/main/java/com/tangem/tap/features/customtoken/legacy/compose/AddCustomTokenScreen.kt b/app/src/main/java/com/tangem/tap/features/customtoken/legacy/compose/AddCustomTokenScreen.kt index 0a4ad3b4a6..baa487cec7 100644 --- a/app/src/main/java/com/tangem/tap/features/customtoken/legacy/compose/AddCustomTokenScreen.kt +++ b/app/src/main/java/com/tangem/tap/features/customtoken/legacy/compose/AddCustomTokenScreen.kt @@ -1,48 +1,21 @@ package com.tangem.tap.features.customtoken.legacy.compose -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.material.BottomSheetScaffold -import androidx.compose.material.BottomSheetScaffoldState -import androidx.compose.material.BottomSheetState -import androidx.compose.material.BottomSheetValue -import androidx.compose.material.ExperimentalMaterialApi -import androidx.compose.material.FabPosition -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Scaffold -import androidx.compose.material.Surface -import androidx.compose.material.rememberBottomSheetScaffoldState -import androidx.compose.material.rememberScaffoldState -import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.MutableState -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.material.* +import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.colorResource -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import com.tangem.core.ui.components.PrimaryButtonIconLeft +import com.tangem.core.ui.components.PrimaryButtonIconStart import com.tangem.core.ui.components.keyboardAsState import com.tangem.core.ui.res.TangemTheme import com.tangem.domain.AddCustomTokenError import com.tangem.domain.common.form.DataField import com.tangem.domain.common.form.FieldId -import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.ContractAddress -import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.Decimals -import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.DerivationPath -import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.Name -import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.Network -import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.Symbol +import com.tangem.domain.features.addCustomToken.CustomTokenFieldId.* import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenAction import com.tangem.domain.features.addCustomToken.redux.AddCustomTokenState import com.tangem.domain.features.addCustomToken.redux.ScreenState @@ -189,12 +162,12 @@ fun Warnings(warnings: List) { @Composable private fun AddButton(state: MutableState) { - PrimaryButtonIconLeft( + PrimaryButtonIconStart( modifier = Modifier .padding(horizontal = TangemTheme.dimens.spacing16) .fillMaxWidth(), text = stringResource(id = R.string.common_add), - icon = painterResource(id = R.drawable.ic_plus_24), + iconResId = R.drawable.ic_plus_24, enabled = state.value.screenState.addButton.isEnabled, onClick = { domainStore.dispatch(AddCustomTokenAction.OnAddCustomTokenClicked) }, ) diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/common/DetailsComposeElements.kt b/app/src/main/java/com/tangem/tap/features/details/ui/common/DetailsComposeElements.kt index 38fdbe45f6..c92047d0bc 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/common/DetailsComposeElements.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/common/DetailsComposeElements.kt @@ -1,23 +1,9 @@ package com.tangem.tap.features.details.ui.common import androidx.activity.compose.BackHandler -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.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.systemBarsPadding +import androidx.compose.foundation.layout.* import androidx.compose.foundation.selection.selectable -import androidx.compose.material.Icon -import androidx.compose.material.IconButton -import androidx.compose.material.RadioButton -import androidx.compose.material.RadioButtonDefaults -import androidx.compose.material.Scaffold -import androidx.compose.material.Text -import androidx.compose.material.TopAppBar +import androidx.compose.material.* import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -25,7 +11,7 @@ import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import com.tangem.core.ui.components.PrimaryButtonIconRight +import com.tangem.core.ui.components.PrimaryButtonIconEnd import com.tangem.core.ui.res.TangemTheme import com.tangem.wallet.R @@ -110,13 +96,13 @@ fun EmptyTopBarWithNavigation( @Composable fun DetailsMainButton(title: String, onClick: () -> Unit, modifier: Modifier = Modifier, enabled: Boolean = true) { - PrimaryButtonIconRight( + PrimaryButtonIconEnd( text = title, enabled = enabled, onClick = onClick, modifier = modifier .fillMaxWidth(), - icon = painterResource(id = R.drawable.ic_tangem_24), + iconResId = R.drawable.ic_tangem_24, ) } diff --git a/app/src/main/java/com/tangem/tap/features/walletSelector/ui/components/WallectSelectorScreenContent.kt b/app/src/main/java/com/tangem/tap/features/walletSelector/ui/components/WallectSelectorScreenContent.kt index 71d7f6a253..f0dd6b139b 100644 --- a/app/src/main/java/com/tangem/tap/features/walletSelector/ui/components/WallectSelectorScreenContent.kt +++ b/app/src/main/java/com/tangem/tap/features/walletSelector/ui/components/WallectSelectorScreenContent.kt @@ -3,14 +3,7 @@ package com.tangem.tap.features.walletSelector.ui.components import androidx.annotation.StringRes import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background -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.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.material.Icon @@ -28,7 +21,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import com.tangem.core.ui.components.PrimaryButton -import com.tangem.core.ui.components.SecondaryButtonIconRight +import com.tangem.core.ui.components.SecondaryButtonIconEnd import com.tangem.core.ui.components.SpacerWMax import com.tangem.core.ui.components.atoms.Hand import com.tangem.core.ui.res.TangemTheme @@ -191,11 +184,11 @@ private fun Footer( onClick = onUnlockClick, ) } - SecondaryButtonIconRight( + SecondaryButtonIconEnd( modifier = Modifier.fillMaxWidth(), text = stringResource(R.string.user_wallet_list_add_button), showProgress = showAddCardProgress, - icon = painterResource(id = R.drawable.ic_tangem_24), + iconResId = R.drawable.ic_tangem_24, onClick = onAddCardClick, ) } diff --git a/app/src/main/java/com/tangem/tap/features/welcome/ui/components/WelcomeScreenContent.kt b/app/src/main/java/com/tangem/tap/features/welcome/ui/components/WelcomeScreenContent.kt index 373d370eda..cc83e0d893 100644 --- a/app/src/main/java/com/tangem/tap/features/welcome/ui/components/WelcomeScreenContent.kt +++ b/app/src/main/java/com/tangem/tap/features/welcome/ui/components/WelcomeScreenContent.kt @@ -1,11 +1,7 @@ package com.tangem.tap.features.welcome.ui.components import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.* import androidx.compose.material.Icon import androidx.compose.material.Text import androidx.compose.runtime.Composable @@ -15,12 +11,7 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview -import com.tangem.core.ui.components.PrimaryButtonIconRight -import com.tangem.core.ui.components.SecondaryButton -import com.tangem.core.ui.components.SpacerH12 -import com.tangem.core.ui.components.SpacerH16 -import com.tangem.core.ui.components.SpacerH32 -import com.tangem.core.ui.components.SpacerHMax +import com.tangem.core.ui.components.* import com.tangem.core.ui.res.TangemTheme import com.tangem.wallet.R @@ -76,13 +67,13 @@ internal fun WelcomeScreenContent( onClick = onUnlockClick, ) SpacerH12() - PrimaryButtonIconRight( + PrimaryButtonIconEnd( modifier = Modifier .padding(horizontal = TangemTheme.dimens.spacing16) .fillMaxWidth(), text = stringResource(R.string.welcome_unlock_card), showProgress = showScanCardProgress, - icon = painterResource(id = R.drawable.ic_tangem_24), + iconResId = R.drawable.ic_tangem_24, onClick = onScanCardClick, ) SpacerH16() diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/Buttons.kt b/core/ui/src/main/java/com/tangem/core/ui/components/Buttons.kt index 8e63ac74d1..00a6b2ac03 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/Buttons.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/Buttons.kt @@ -1,5 +1,6 @@ package com.tangem.core.ui.components +import androidx.annotation.DrawableRes import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.material.* @@ -8,7 +9,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shape -import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.tooling.preview.Preview @@ -39,9 +39,9 @@ fun TextButton(text: String, onClick: () -> Unit, modifier: Modifier = Modifier, * [Show in Figma](https://www.figma.com/file/14ISV23YB1yVW1uNVwqrKv/Android?node-id=97%3A62&t=TmfD6UBHPg9uYfev-4) * */ @Composable -fun TextButtonIconLeft( +fun TextButtonIconStart( text: String, - icon: Painter, + @DrawableRes iconResId: Int, onClick: () -> Unit, modifier: Modifier = Modifier, enabled: Boolean = true, @@ -49,7 +49,7 @@ fun TextButtonIconLeft( TangemButton( modifier = modifier, text = text, - icon = TangemButtonIcon.Left(icon), + icon = TangemButtonIcon.Start(iconResId), onClick = onClick, enabled = enabled, showProgress = false, @@ -97,9 +97,9 @@ fun PrimaryButton( * [Show in Figma](https://www.figma.com/file/14ISV23YB1yVW1uNVwqrKv/Android?node-id=68%3A47&t=TmfD6UBHPg9uYfev-4) * */ @Composable -fun PrimaryButtonIconRight( +fun PrimaryButtonIconEnd( text: String, - icon: Painter, + @DrawableRes iconResId: Int, onClick: () -> Unit, modifier: Modifier = Modifier, showProgress: Boolean = false, @@ -108,7 +108,7 @@ fun PrimaryButtonIconRight( TangemButton( modifier = modifier, text = text, - icon = TangemButtonIcon.Right(icon), + icon = TangemButtonIcon.End(iconResId), onClick = onClick, colors = TangemButtonsDefaults.primaryButtonColors, enabled = enabled, @@ -120,9 +120,9 @@ fun PrimaryButtonIconRight( * [Show in Figma](https://www.figma.com/file/14ISV23YB1yVW1uNVwqrKv/Android?node-id=233%3A258&t=TmfD6UBHPg9uYfev-4) * */ @Composable -fun PrimaryButtonIconLeft( +fun PrimaryButtonIconStart( text: String, - icon: Painter, + @DrawableRes iconResId: Int, onClick: () -> Unit, modifier: Modifier = Modifier, showProgress: Boolean = false, @@ -131,7 +131,7 @@ fun PrimaryButtonIconLeft( TangemButton( modifier = modifier, text = text, - icon = TangemButtonIcon.Left(icon), + icon = TangemButtonIcon.Start(iconResId), onClick = onClick, colors = TangemButtonsDefaults.primaryButtonColors, enabled = enabled, @@ -164,9 +164,9 @@ fun SecondaryButton( * [Show in Figma](https://www.figma.com/file/14ISV23YB1yVW1uNVwqrKv/Android?node-id=99%3A50&t=TmfD6UBHPg9uYfev-4) * */ @Composable -fun SecondaryButtonIconRight( +fun SecondaryButtonIconEnd( text: String, - icon: Painter, + @DrawableRes iconResId: Int, onClick: () -> Unit, modifier: Modifier = Modifier, showProgress: Boolean = false, @@ -175,7 +175,7 @@ fun SecondaryButtonIconRight( TangemButton( modifier = modifier, text = text, - icon = TangemButtonIcon.Right(icon), + icon = TangemButtonIcon.End(iconResId), onClick = onClick, colors = TangemButtonsDefaults.secondaryButtonColors, enabled = enabled, @@ -187,9 +187,9 @@ fun SecondaryButtonIconRight( * [Show in Figma](https://www.figma.com/file/14ISV23YB1yVW1uNVwqrKv/Android?node-id=233%3A262&t=TmfD6UBHPg9uYfev-4) * */ @Composable -fun SecondaryButtonIconLeft( +fun SecondaryButtonIconStart( text: String, - icon: Painter, + @DrawableRes iconResId: Int, onClick: () -> Unit, modifier: Modifier = Modifier, showProgress: Boolean = false, @@ -198,7 +198,7 @@ fun SecondaryButtonIconLeft( TangemButton( modifier = modifier, text = text, - icon = TangemButtonIcon.Left(icon), + icon = TangemButtonIcon.Start(iconResId), onClick = onClick, colors = TangemButtonsDefaults.secondaryButtonColors, enabled = enabled, @@ -214,7 +214,7 @@ fun SelectorButton(text: String, onClick: () -> Unit, modifier: Modifier = Modif modifier = modifier, text = text, textStyle = TangemTheme.typography.subtitle2, - icon = TangemButtonIcon.Right(painterResource(id = R.drawable.ic_chevron_24)), + icon = TangemButtonIcon.End(iconResId = R.drawable.ic_chevron_24), onClick = onClick, colors = TangemButtonsDefaults.selectorButtonColors, showProgress = false, @@ -232,7 +232,7 @@ fun SelectorButton(text: String, onClick: () -> Unit, modifier: Modifier = Modif @Composable fun RoundedActionButton( text: String, - icon: Painter, + @DrawableRes iconResId: Int, onClick: () -> Unit, modifier: Modifier = Modifier, enabled: Boolean = true, @@ -240,7 +240,7 @@ fun RoundedActionButton( TangemButton( modifier = modifier, text = text, - icon = TangemButtonIcon.Left(icon), + icon = TangemButtonIcon.Start(iconResId), onClick = onClick, enabled = enabled, showProgress = false, @@ -255,7 +255,7 @@ fun RoundedActionButton( @Composable fun ActionButton( text: String, - icon: Painter, + @DrawableRes iconResId: Int, onClick: () -> Unit, modifier: Modifier = Modifier, enabled: Boolean = true, @@ -263,7 +263,7 @@ fun ActionButton( TangemButton( modifier = modifier, text = text, - icon = TangemButtonIcon.Left(icon), + icon = TangemButtonIcon.Start(iconResId), onClick = onClick, enabled = enabled, showProgress = false, @@ -278,7 +278,7 @@ fun ActionButton( @Composable fun BackgroundActionButton( text: String, - icon: Painter, + @DrawableRes iconResId: Int, onClick: () -> Unit, modifier: Modifier = Modifier, enabled: Boolean = true, @@ -286,7 +286,7 @@ fun BackgroundActionButton( TangemButton( modifier = modifier, text = text, - icon = TangemButtonIcon.Left(icon), + icon = TangemButtonIcon.Start(iconResId), onClick = onClick, enabled = enabled, showProgress = false, @@ -324,6 +324,7 @@ private fun TangemButton( elevation = elevation, shape = size.toShape(), colors = colors, + contentPadding = size.toContentPadding(icon = icon), ) { ButtonContent( text = text, @@ -348,10 +349,10 @@ private fun ButtonContent( enabled: Boolean, showProgress: Boolean, ) { - val icon = @Composable { painter: Painter -> + val icon = @Composable { iconResId: Int -> Icon( modifier = Modifier.size(TangemTheme.dimens.size20), - painter = painter, + painter = painterResource(id = iconResId), tint = colors.contentColor(enabled = enabled).value, contentDescription = null, ) @@ -372,16 +373,17 @@ private fun ButtonContent( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(size.toIconPadding()), ) { - if (buttonIcon is TangemButtonIcon.Left) { - icon(buttonIcon.painter) + if (buttonIcon is TangemButtonIcon.Start) { + icon(buttonIcon.iconResId) } Text( text = text, style = textStyle, color = colors.contentColor(enabled = enabled).value, + maxLines = 1, ) - if (buttonIcon is TangemButtonIcon.Right) { - icon(buttonIcon.painter) + if (buttonIcon is TangemButtonIcon.End) { + icon(buttonIcon.iconResId) } } } @@ -389,14 +391,14 @@ private fun ButtonContent( @Immutable private sealed interface TangemButtonIcon { - val painter: Painter? + val iconResId: Int? - data class Left(override val painter: Painter) : TangemButtonIcon + data class Start(override val iconResId: Int) : TangemButtonIcon - data class Right(override val painter: Painter) : TangemButtonIcon + data class End(override val iconResId: Int) : TangemButtonIcon object None : TangemButtonIcon { - override val painter: Painter? = null + override val iconResId: Int? = null } } @@ -409,6 +411,7 @@ private enum class TangemButtonSize { } @Composable +@ReadOnlyComposable private fun TangemButtonSize.toHeightDp(): Dp = when (this) { TangemButtonSize.Default -> TangemTheme.dimens.size48 TangemButtonSize.Text -> TangemTheme.dimens.size40 @@ -419,6 +422,7 @@ private fun TangemButtonSize.toHeightDp(): Dp = when (this) { } @Composable +@ReadOnlyComposable private fun TangemButtonSize.toShape(): Shape = when (this) { TangemButtonSize.Default -> TangemTheme.shapes.roundedCornersMedium TangemButtonSize.Text -> TangemTheme.shapes.roundedCornersSmall @@ -428,6 +432,7 @@ private fun TangemButtonSize.toShape(): Shape = when (this) { } @Composable +@ReadOnlyComposable private fun TangemButtonSize.toIconPadding(): Dp = when (this) { TangemButtonSize.Default -> TangemTheme.dimens.spacing8 TangemButtonSize.Text -> TangemTheme.dimens.spacing8 @@ -437,7 +442,63 @@ private fun TangemButtonSize.toIconPadding(): Dp = when (this) { -> TangemTheme.dimens.spacing8 } -object TangemButtonsDefaults { +@Composable +@ReadOnlyComposable +private fun TangemButtonSize.toContentPadding(icon: TangemButtonIcon): PaddingValues { + val horizontalPadding = this.toHorizontalContentPadding(icon = icon) + + return when (this) { + TangemButtonSize.Default -> PaddingValues( + top = TangemTheme.dimens.spacing14, + bottom = TangemTheme.dimens.spacing14, + start = horizontalPadding.first, + end = horizontalPadding.second, + ) + TangemButtonSize.Text -> PaddingValues( + top = TangemTheme.dimens.spacing10, + bottom = TangemTheme.dimens.spacing10, + start = horizontalPadding.first, + end = horizontalPadding.second, + ) + TangemButtonSize.Selector -> PaddingValues( + top = TangemTheme.dimens.spacing0_5, + bottom = TangemTheme.dimens.spacing0_5, + start = horizontalPadding.first, + end = horizontalPadding.second, + ) + TangemButtonSize.Action, + TangemButtonSize.RoundedAction, + -> PaddingValues( + top = TangemTheme.dimens.spacing8, + bottom = TangemTheme.dimens.spacing8, + start = horizontalPadding.first, + end = horizontalPadding.second, + ) + } +} + +@Composable +@ReadOnlyComposable +private fun TangemButtonSize.toHorizontalContentPadding(icon: TangemButtonIcon): Pair { + return when (this) { + TangemButtonSize.Default -> TangemTheme.dimens.spacing32 to TangemTheme.dimens.spacing32 + TangemButtonSize.Text -> when (icon) { + is TangemButtonIcon.None -> TangemTheme.dimens.spacing16 to TangemTheme.dimens.spacing16 + is TangemButtonIcon.Start -> TangemTheme.dimens.spacing14 to TangemTheme.dimens.spacing16 + is TangemButtonIcon.End -> TangemTheme.dimens.spacing16 to TangemTheme.dimens.spacing14 + } + TangemButtonSize.Selector -> TangemTheme.dimens.spacing0_5 to TangemTheme.dimens.spacing0_5 + TangemButtonSize.Action, + TangemButtonSize.RoundedAction, + -> when (icon) { + is TangemButtonIcon.None -> TangemTheme.dimens.spacing24 to TangemTheme.dimens.spacing24 + is TangemButtonIcon.Start -> TangemTheme.dimens.spacing16 to TangemTheme.dimens.spacing24 + is TangemButtonIcon.End -> TangemTheme.dimens.spacing24 to TangemTheme.dimens.spacing16 + } + } +} + +private object TangemButtonsDefaults { val elevation: ButtonElevation @Composable get() = ButtonDefaults .elevation( @@ -446,7 +507,9 @@ object TangemButtonsDefaults { ) val primaryButtonColors: ButtonColors - @Composable get() = TangemButtonColors( + @Composable + @ReadOnlyComposable + get() = TangemButtonColors( backgroundColor = TangemTheme.colors.button.primary, contentColor = TangemTheme.colors.text.primary2, disabledBackgroundColor = TangemTheme.colors.button.disabled, @@ -454,7 +517,9 @@ object TangemButtonsDefaults { ) val secondaryButtonColors: ButtonColors - @Composable get() = TangemButtonColors( + @Composable + @ReadOnlyComposable + get() = TangemButtonColors( backgroundColor = TangemTheme.colors.button.secondary, contentColor = TangemTheme.colors.text.primary1, disabledBackgroundColor = TangemTheme.colors.button.disabled, @@ -462,7 +527,9 @@ object TangemButtonsDefaults { ) val defaultTextButtonColors: ButtonColors - @Composable get() = TangemButtonColors( + @Composable + @ReadOnlyComposable + get() = TangemButtonColors( backgroundColor = Color.Transparent, contentColor = TangemTheme.colors.text.secondary, disabledBackgroundColor = Color.Transparent, @@ -470,7 +537,9 @@ object TangemButtonsDefaults { ) val warningTextButtonColors: ButtonColors - @Composable get() = TangemButtonColors( + @Composable + @ReadOnlyComposable + get() = TangemButtonColors( backgroundColor = Color.Transparent, contentColor = TangemTheme.colors.text.warning, disabledBackgroundColor = Color.Transparent, @@ -478,7 +547,9 @@ object TangemButtonsDefaults { ) val selectorButtonColors: ButtonColors - @Composable get() = TangemButtonColors( + @Composable + @ReadOnlyComposable + get() = TangemButtonColors( backgroundColor = Color.Transparent, contentColor = TangemTheme.colors.text.tertiary, disabledBackgroundColor = Color.Transparent, @@ -486,7 +557,9 @@ object TangemButtonsDefaults { ) val backgroundButtonColors: ButtonColors - @Composable get() = TangemButtonColors( + @Composable + @ReadOnlyComposable + get() = TangemButtonColors( backgroundColor = TangemTheme.colors.background.primary, contentColor = TangemTheme.colors.text.primary1, disabledBackgroundColor = TangemTheme.colors.button.disabled, @@ -533,17 +606,17 @@ private fun PrimaryButtonSample(modifier: Modifier = Modifier) { onClick = { /* no-op */ }, ) Divider(modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8)) - PrimaryButtonIconRight( + PrimaryButtonIconEnd( modifier = Modifier.fillMaxWidth(), text = "Manage tokens", - icon = painterResource(id = R.drawable.ic_tangem_24), + iconResId = R.drawable.ic_tangem_24, onClick = { /* no-op */ }, ) Divider(modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8)) - PrimaryButtonIconLeft( + PrimaryButtonIconStart( modifier = Modifier.fillMaxWidth(), text = "Manage tokens", - icon = painterResource(id = R.drawable.ic_tangem_24), + iconResId = R.drawable.ic_tangem_24, onClick = { /* no-op */ }, ) Divider(modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8)) @@ -554,18 +627,18 @@ private fun PrimaryButtonSample(modifier: Modifier = Modifier) { onClick = { /* no-op */ }, ) Divider(modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8)) - PrimaryButtonIconRight( + PrimaryButtonIconEnd( modifier = Modifier.fillMaxWidth(), text = "Manage tokens", - icon = painterResource(id = R.drawable.ic_tangem_24), + iconResId = R.drawable.ic_tangem_24, enabled = false, onClick = { /* no-op */ }, ) Divider(modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8)) - PrimaryButtonIconLeft( + PrimaryButtonIconStart( modifier = Modifier.fillMaxWidth(), text = "Manage tokens", - icon = painterResource(id = R.drawable.ic_tangem_24), + iconResId = R.drawable.ic_tangem_24, enabled = false, onClick = { /* no-op */ }, ) @@ -607,17 +680,17 @@ private fun SecondaryButtonSample(modifier: Modifier = Modifier) { onClick = { /* no-op */ }, ) Divider(modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8)) - SecondaryButtonIconRight( + SecondaryButtonIconEnd( modifier = Modifier.fillMaxWidth(), text = "Manage tokens", - icon = painterResource(id = R.drawable.ic_tangem_24), + iconResId = R.drawable.ic_tangem_24, onClick = { /* no-op */ }, ) Divider(modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8)) - SecondaryButtonIconLeft( + SecondaryButtonIconStart( modifier = Modifier.fillMaxWidth(), text = "Manage tokens", - icon = painterResource(id = R.drawable.ic_tangem_24), + iconResId = R.drawable.ic_tangem_24, onClick = { /* no-op */ }, ) Divider(modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8)) @@ -628,18 +701,18 @@ private fun SecondaryButtonSample(modifier: Modifier = Modifier) { onClick = { /* no-op */ }, ) Divider(modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8)) - SecondaryButtonIconRight( + SecondaryButtonIconEnd( modifier = Modifier.fillMaxWidth(), text = "Manage tokens", - icon = painterResource(id = R.drawable.ic_tangem_24), + iconResId = R.drawable.ic_tangem_24, enabled = false, onClick = { /* no-op */ }, ) Divider(modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8)) - SecondaryButtonIconLeft( + SecondaryButtonIconStart( modifier = Modifier.fillMaxWidth(), text = "Manage tokens", - icon = painterResource(id = R.drawable.ic_tangem_24), + iconResId = R.drawable.ic_tangem_24, enabled = false, onClick = { /* no-op */ }, ) @@ -673,9 +746,9 @@ private fun TextButtonSample(modifier: Modifier = Modifier) { onClick = { /* no-op */ }, ) Divider(modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8)) - TextButtonIconLeft( + TextButtonIconStart( text = "Enabled", - icon = painterResource(id = R.drawable.ic_plus_24), + iconResId = R.drawable.ic_plus_24, onClick = { /* no-op */ }, ) Divider(modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8)) @@ -685,9 +758,9 @@ private fun TextButtonSample(modifier: Modifier = Modifier) { onClick = { /* no-op */ }, ) Divider(modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8)) - TextButtonIconLeft( + TextButtonIconStart( text = "Enabled", - icon = painterResource(id = R.drawable.ic_plus_24), + iconResId = R.drawable.ic_plus_24, enabled = false, onClick = { /* no-op */ }, ) @@ -728,39 +801,39 @@ private fun ActionButtonSample(modifier: Modifier = Modifier) { ) { RoundedActionButton( text = "Send", - icon = painterResource(id = R.drawable.ic_arrow_up_24), + iconResId = R.drawable.ic_arrow_up_24, onClick = { /* [REDACTED_TODO_COMMENT]*/ }, ) Divider(modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8)) ActionButton( text = "Send", - icon = painterResource(id = R.drawable.ic_arrow_up_24), + iconResId = R.drawable.ic_arrow_up_24, onClick = { /* [REDACTED_TODO_COMMENT]*/ }, ) Divider(modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8)) BackgroundActionButton( text = "Send", - icon = painterResource(id = R.drawable.ic_arrow_up_24), + iconResId = R.drawable.ic_arrow_up_24, onClick = { /* [REDACTED_TODO_COMMENT]*/ }, ) Divider(modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8)) RoundedActionButton( text = "Send", - icon = painterResource(id = R.drawable.ic_arrow_up_24), + iconResId = R.drawable.ic_arrow_up_24, enabled = false, onClick = { /* [REDACTED_TODO_COMMENT]*/ }, ) Divider(modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8)) ActionButton( text = "Send", - icon = painterResource(id = R.drawable.ic_arrow_up_24), + iconResId = R.drawable.ic_arrow_up_24, enabled = false, onClick = { /* [REDACTED_TODO_COMMENT]*/ }, ) Divider(modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8)) BackgroundActionButton( text = "Send", - icon = painterResource(id = R.drawable.ic_arrow_up_24), + iconResId = R.drawable.ic_arrow_up_24, enabled = false, onClick = { /* [REDACTED_TODO_COMMENT]*/ }, ) diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/SuccessScreen.kt b/core/ui/src/main/java/com/tangem/core/ui/components/SuccessScreen.kt index ebab2d5145..c5c3feabc1 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/SuccessScreen.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/SuccessScreen.kt @@ -3,15 +3,7 @@ package com.tangem.core.ui.components import androidx.annotation.DrawableRes import androidx.annotation.StringRes import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -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.size -import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.* import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.verticalScroll @@ -143,9 +135,9 @@ private fun SecondaryButtonForResultScreen( @DrawableRes secondaryButtonIcon: Int? = null, ) { if (secondaryButtonIcon != null) { - SecondaryButtonIconLeft( + SecondaryButtonIconStart( text = stringResource(id = secondaryButtonText), - icon = painterResource(id = secondaryButtonIcon), + iconResId = secondaryButtonIcon, onClick = onSecondaryButtonClick, modifier = Modifier.fillMaxWidth(), ) diff --git a/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/ui/CheckSeedPhraseScreen.kt b/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/ui/CheckSeedPhraseScreen.kt index b67af3906f..2edb3e416c 100644 --- a/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/ui/CheckSeedPhraseScreen.kt +++ b/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/ui/CheckSeedPhraseScreen.kt @@ -4,11 +4,10 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import com.tangem.core.ui.R import com.tangem.core.ui.components.OutlineTextField -import com.tangem.core.ui.components.PrimaryButtonIconLeft +import com.tangem.core.ui.components.PrimaryButtonIconStart import com.tangem.core.ui.res.TangemTheme import com.tangem.feature.onboarding.presentation.wallet2.model.CheckSeedPhraseState import com.tangem.feature.onboarding.presentation.wallet2.ui.components.Description @@ -57,11 +56,11 @@ fun CheckSeedPhraseScreen(state: CheckSeedPhraseState, modifier: Modifier = Modi } OnboardingActionBlock( firstActionContent = { - PrimaryButtonIconLeft( + PrimaryButtonIconStart( modifier = Modifier .fillMaxWidth(), text = stringResource(id = R.string.onboarding_create_wallet_button_create_wallet), - icon = painterResource(id = R.drawable.ic_tangem_24), + iconResId = R.drawable.ic_tangem_24, enabled = state.buttonCreateWallet.enabled, showProgress = state.buttonCreateWallet.showProgress, onClick = state.buttonCreateWallet.onClick, diff --git a/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/ui/ImportSeedPhraseScreen.kt b/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/ui/ImportSeedPhraseScreen.kt index 805aee6175..d29fd51838 100644 --- a/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/ui/ImportSeedPhraseScreen.kt +++ b/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/ui/ImportSeedPhraseScreen.kt @@ -9,12 +9,11 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.unit.IntOffset import com.tangem.core.ui.components.PrimaryButton -import com.tangem.core.ui.components.PrimaryButtonIconLeft +import com.tangem.core.ui.components.PrimaryButtonIconStart import com.tangem.core.ui.components.TangemTextFieldsDefault import com.tangem.core.ui.res.TangemTheme import com.tangem.feature.onboarding.R @@ -56,11 +55,11 @@ fun ImportSeedPhraseScreen(state: ImportSeedPhraseState, modifier: Modifier = Mo Box { OnboardingActionBlock( firstActionContent = { - PrimaryButtonIconLeft( + PrimaryButtonIconStart( modifier = Modifier .fillMaxWidth(), text = stringResource(id = R.string.onboarding_create_wallet_button_create_wallet), - icon = painterResource(id = R.drawable.ic_tangem_24), + iconResId = R.drawable.ic_tangem_24, enabled = state.buttonCreateWallet.enabled, showProgress = state.buttonCreateWallet.showProgress, onClick = state.buttonCreateWallet.onClick, diff --git a/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/ui/IntroScreen.kt b/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/ui/IntroScreen.kt index c99a233f33..cba03f9df9 100644 --- a/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/ui/IntroScreen.kt +++ b/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/ui/IntroScreen.kt @@ -11,7 +11,7 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import coil.compose.SubcomposeAsyncImage import coil.request.ImageRequest -import com.tangem.core.ui.components.PrimaryButtonIconLeft +import com.tangem.core.ui.components.PrimaryButtonIconStart import com.tangem.core.ui.components.SecondaryButton import com.tangem.core.ui.res.TangemTheme import com.tangem.feature.onboarding.R @@ -46,11 +46,11 @@ fun IntroScreen(state: IntroState, modifier: Modifier = Modifier) { Box { OnboardingActionBlock( firstActionContent = { - PrimaryButtonIconLeft( + PrimaryButtonIconStart( modifier = Modifier .fillMaxWidth(), text = stringResource(id = R.string.onboarding_create_wallet_button_create_wallet), - icon = painterResource(id = R.drawable.ic_tangem_24), + iconResId = R.drawable.ic_tangem_24, enabled = state.buttonCreateWallet.enabled, showProgress = state.buttonCreateWallet.showProgress, onClick = state.buttonCreateWallet.onClick, diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapPermissionBottomSheetContent.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapPermissionBottomSheetContent.kt index 1f87fc061f..6f8bee6fe7 100644 --- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapPermissionBottomSheetContent.kt +++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapPermissionBottomSheetContent.kt @@ -74,9 +74,9 @@ fun SwapPermissionBottomSheetContent(data: SwapPermissionState.ReadyForRequest, SpacerH28() - PrimaryButtonIconRight( + PrimaryButtonIconEnd( text = stringResource(id = R.string.swapping_permission_buttons_approve), - icon = painterResource(id = R.drawable.ic_tangem_24), + iconResId = R.drawable.ic_tangem_24, modifier = Modifier.fillMaxWidth(), onClick = data.approveButton.onClick, ) diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreenContent.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreenContent.kt index b7a127af0b..27e4b3c750 100644 --- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreenContent.kt +++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreenContent.kt @@ -345,10 +345,10 @@ private fun MainButton(state: SwapStateHolder, onPermissionWarningClick: () -> U ) } else -> { - PrimaryButtonIconRight( + PrimaryButtonIconEnd( modifier = Modifier.fillMaxWidth(), text = stringResource(id = R.string.swapping_swap), - icon = painterResource(id = R.drawable.ic_tangem_24), + iconResId = R.drawable.ic_tangem_24, enabled = state.swapButton.enabled, showProgress = state.swapButton.loading, onClick = state.swapButton.onClick,