diff --git a/core/ui/src/main/java/com/tangem/core/ui/ds/button/action/ActionButtons.kt b/core/ui/src/main/java/com/tangem/core/ui/ds/button/action/ActionButtons.kt new file mode 100644 index 0000000000..9a88602e17 --- /dev/null +++ b/core/ui/src/main/java/com/tangem/core/ui/ds/button/action/ActionButtons.kt @@ -0,0 +1,129 @@ +package com.tangem.core.ui.ds.button.action + +import android.content.res.Configuration +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.key +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewParameter +import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import androidx.compose.ui.unit.dp +import com.tangem.core.ui.R +import com.tangem.core.ui.ds.button.SecondaryTangemButton +import com.tangem.core.ui.ds.button.TangemButtonShape +import com.tangem.core.ui.ds.button.TangemButtonType +import com.tangem.core.ui.ds.button.TangemButtonUM +import com.tangem.core.ui.ds.image.TangemIconUM +import com.tangem.core.ui.extensions.orEmpty +import com.tangem.core.ui.extensions.resolveReference +import com.tangem.core.ui.extensions.stringReference +import com.tangem.core.ui.res.TangemTheme +import com.tangem.core.ui.res.TangemThemePreviewRedesign +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.persistentListOf + +/** + * Action buttons row + * + * [Figma](https://www.figma.com/design/RU7AIgwHtGdMfy83T5UOoR/Core-Library?node-id=9467-37845&m=dev) + * + * @param buttons list of buttons + * @param modifier modifier + */ +@Composable +fun ActionButtons(buttons: ImmutableList, modifier: Modifier = Modifier) { + Row( + horizontalArrangement = Arrangement.spacedBy(14.dp), + verticalAlignment = Alignment.CenterVertically, + modifier = modifier, + ) { + buttons.forEachIndexed { index, button -> + key(button.text to index) { + val textColor = if (button.isEnabled) { + TangemTheme.colors2.text.neutral.primary + } else { + TangemTheme.colors2.text.status.disabled + } + Column( + modifier = Modifier.padding(horizontal = TangemTheme.dimens2.x2_5), + verticalArrangement = Arrangement.spacedBy(TangemTheme.dimens2.x2), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + SecondaryTangemButton( + tangemIconUM = button.tangemIconUM, + onClick = button.onClick, + isEnabled = button.isEnabled, + shape = TangemButtonShape.Rounded, + ) + Text( + text = button.text.orEmpty().resolveReference(), + style = TangemTheme.typography2.calloutSemibold15, + color = textColor, + maxLines = 1, + ) + } + } + } + } +} + +// region Preview +@Composable +@Preview(showBackground = true, widthDp = 360) +@Preview(showBackground = true, widthDp = 360, uiMode = Configuration.UI_MODE_NIGHT_YES) +private fun ActionButtons_Preview( + @PreviewParameter(ActionButtonsPreviewProvider::class) params: ImmutableList, +) { + TangemThemePreviewRedesign { + ActionButtons( + buttons = params, + ) + } +} + +private class ActionButtonsPreviewProvider : PreviewParameterProvider> { + override val values: Sequence> + get() = sequenceOf( + persistentListOf( + TangemButtonUM( + text = stringReference("Send"), + tangemIconUM = previewIcon(R.drawable.ic_arrow_up_24, isEnabled = true), + onClick = { }, + isEnabled = true, + type = TangemButtonType.Secondary, + ), + TangemButtonUM( + text = stringReference("Receive"), + tangemIconUM = previewIcon(R.drawable.ic_exchange_default_24, isEnabled = true), + onClick = { }, + isEnabled = true, + type = TangemButtonType.Secondary, + ), + TangemButtonUM( + text = stringReference("Swap"), + tangemIconUM = previewIcon(R.drawable.ic_dollar_default_24, isEnabled = false), + onClick = { }, + isEnabled = false, + type = TangemButtonType.Secondary, + ), + ), + ) +} + +private fun previewIcon(iconRes: Int, isEnabled: Boolean): TangemIconUM = TangemIconUM.Icon( + iconRes = iconRes, + tintReference = { + if (isEnabled) { + TangemTheme.colors2.graphic.neutral.primary + } else { + TangemTheme.colors2.graphic.neutral.quaternary + } + }, +) +// endregion \ No newline at end of file diff --git a/core/ui/src/main/java/com/tangem/core/ui/ds/row/token/internal/TokenRowPriceChangeContent.kt b/core/ui/src/main/java/com/tangem/core/ui/ds/row/token/internal/TokenRowPriceChangeContent.kt index 052c994ac7..14e61f4061 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/ds/row/token/internal/TokenRowPriceChangeContent.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/ds/row/token/internal/TokenRowPriceChangeContent.kt @@ -19,7 +19,7 @@ import com.tangem.core.ui.components.text.applyBladeBrush import com.tangem.core.ui.res.TangemTheme @Composable -internal fun RowScope.TokenRowPriceChangeContent( +fun RowScope.TokenRowPriceChangeContent( priceChangeState: PriceChangeState.Content, isFlickering: Boolean, isAvailable: Boolean = true, diff --git a/core/ui/src/main/res/drawable/ic_arrow_expand_24.xml b/core/ui/src/main/res/drawable/ic_arrow_expand_24.xml new file mode 100644 index 0000000000..ce56686a2c --- /dev/null +++ b/core/ui/src/main/res/drawable/ic_arrow_expand_24.xml @@ -0,0 +1,18 @@ + + + + diff --git a/core/ui/src/main/res/drawable/ic_chevron_small_left_24.xml b/core/ui/src/main/res/drawable/ic_chevron_small_left_24.xml new file mode 100644 index 0000000000..b44b76019e --- /dev/null +++ b/core/ui/src/main/res/drawable/ic_chevron_small_left_24.xml @@ -0,0 +1,12 @@ + + + diff --git a/core/ui/src/main/res/drawable/ic_sort_24.xml b/core/ui/src/main/res/drawable/ic_sort_24.xml index 538a24d8e0..f2b3124b42 100644 --- a/core/ui/src/main/res/drawable/ic_sort_24.xml +++ b/core/ui/src/main/res/drawable/ic_sort_24.xml @@ -3,7 +3,18 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + + diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletBalance.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletBalance.kt index 41663f384a..7afd89c781 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletBalance.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletBalance.kt @@ -11,7 +11,6 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.text.TextAutoSize import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.key import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha @@ -25,25 +24,21 @@ import androidx.compose.ui.unit.dp import com.tangem.core.ui.components.SpacerH import com.tangem.core.ui.components.TextShimmer import com.tangem.core.ui.components.text.applyBladeBrush -import com.tangem.core.ui.ds.button.SecondaryTangemButton -import com.tangem.core.ui.ds.button.TangemButtonShape import com.tangem.core.ui.ds.button.TangemButtonUM +import com.tangem.core.ui.ds.button.action.ActionButtons import com.tangem.core.ui.ds.image.TangemDeviceIcon import com.tangem.core.ui.ds.placeholder.TextPlaceholder import com.tangem.core.ui.ds.topbar.collapsing.TangemCollapsingAppBarBehavior import com.tangem.core.ui.ds.topbar.collapsing.rememberTangemExitUntilCollapsedScrollBehavior import com.tangem.core.ui.ds.topbar.collapsing.snapToExitUntilCollapsed -import com.tangem.core.ui.extensions.orEmpty import com.tangem.core.ui.extensions.orMaskWithStars import com.tangem.core.ui.extensions.resolveAnnotatedReference -import com.tangem.core.ui.extensions.resolveReference import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreviewRedesign import com.tangem.core.ui.test.MainScreenTestTags import com.tangem.feature.wallet.presentation.preview.WalletBalancePreview import com.tangem.feature.wallet.presentation.preview.WalletPreviewData import com.tangem.feature.wallet.presentation.wallet.state.model.WalletBalanceUM -import com.tangem.feature.wallet.presentation.wallet.ui.components.fastForEach import com.tangem.utils.StringsSigns import kotlinx.collections.immutable.ImmutableList @@ -152,41 +147,6 @@ private fun Balance(walletBalanceUM: WalletBalanceUM, isBalanceHidden: Boolean, } } -@Composable -private fun ActionButtons(buttons: ImmutableList) { - Row( - horizontalArrangement = Arrangement.spacedBy(14.dp), - verticalAlignment = Alignment.CenterVertically, - ) { - buttons.fastForEach { button -> - key(button.text) { - val textColor = if (button.isEnabled) { - TangemTheme.colors2.text.neutral.primary - } else { - TangemTheme.colors2.text.status.disabled - } - Column( - modifier = Modifier.padding(horizontal = TangemTheme.dimens2.x2_5), - verticalArrangement = Arrangement.spacedBy(TangemTheme.dimens2.x2), - horizontalAlignment = Alignment.CenterHorizontally, - ) { - SecondaryTangemButton( - tangemIconUM = button.tangemIconUM, - onClick = button.onClick, - isEnabled = button.isEnabled, - shape = TangemButtonShape.Rounded, - ) - Text( - text = button.text.orEmpty().resolveReference(), - style = TangemTheme.typography2.bodySemibold15, - color = textColor, - ) - } - } - } - } -} - // region Preview @Composable @Preview(showBackground = true, widthDp = 360)