diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml
index e4f4e75ca9..516445f46f 100644
--- a/core/res/src/main/res/values-de/strings.xml
+++ b/core/res/src/main/res/values-de/strings.xml
@@ -722,6 +722,7 @@
Pro Block
Täglich
Täglich
+ Alle %1$s Sek.
Pro Epoche
Pro Ära
Stündlich
@@ -744,6 +745,7 @@
Unstake Assets %s
Validator/ Prüfer
Validatoren
+ Strategischer Partner
Abstimmung
Abstimmung gesperrt
Zurückziehen
diff --git a/core/res/src/main/res/values-es/strings.xml b/core/res/src/main/res/values-es/strings.xml
index 961dbdaafb..ba3e1b02eb 100644
--- a/core/res/src/main/res/values-es/strings.xml
+++ b/core/res/src/main/res/values-es/strings.xml
@@ -338,7 +338,7 @@
Eliminar
por ejemplo, BTC I trust, hodl I must
- Su cartera ha sido actualizada
+ Su portafolio ha sido actualizada
El token seleccionado no está disponible actualmente para acciones dentro de la billetera cripto. Pero no se preocupa, puede expresar su interés votando a favor.
Votar a favor
Elegir wallet
@@ -373,7 +373,7 @@
Compradores experimentados
Evaluación
Ordenar por
- Mejores Ganadores
+ Top Ganadores
Top Perdedores
Tendencias
Acerca de %s
@@ -720,6 +720,7 @@
Bloquear
Día
Cada día
+ Cada %1$s segundo(s)
Época
Era
Hora
@@ -742,8 +743,9 @@
Detenando el staking de activos %s
Validador
Validadores
+ Socio estratégico
Votar
- Voto bloqueado
+ Votar
Retirar
Sus stakes
Almacene sus activos crypto de forma segura manteniendo las claves privadas contenidas en su tarjeta
diff --git a/core/res/src/main/res/values-fr/strings.xml b/core/res/src/main/res/values-fr/strings.xml
index 17c960b9e2..e310d6723c 100644
--- a/core/res/src/main/res/values-fr/strings.xml
+++ b/core/res/src/main/res/values-fr/strings.xml
@@ -720,6 +720,7 @@
Bloquer
Jour
Chaque jour
+ Toute(s) les %1$s seconde(s)
Époque
Ère
Heure
@@ -742,8 +743,9 @@
En train de destaker les actifs %s
Validateur
Validateurs
+ Partenaire stratégique
Voter
- Vote bloqué
+ Voter
Retirer
Vos stakes
Stockez vos actifs crypto en toute sécurité tout en conservant les clés privées contenues dans votre carte
diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml
index 9066c1ebb1..0d15d6edfc 100644
--- a/core/res/src/main/res/values-ja/strings.xml
+++ b/core/res/src/main/res/values-ja/strings.xml
@@ -95,6 +95,9 @@
- %d 日
+
+ - 日
+
削除
無効
完了
@@ -340,7 +343,7 @@
賛成票を投じる
ウォレットを選択
ウォレットは複数のネットワークをサポートしていません。
- このアセットの購入、交換、受け取りを開始するには、ポートフォリオに追加してください。
+ このアセットを購入・交換・受け取るには、ポートフォリオに追加してください。
このアセットは利用できません
このアセットはこのウォレットでは使用できません。
ポートフォリオに追加
@@ -375,6 +378,9 @@
下落率上位
トレンド
%sについて
+
+ - %d取引所
+
- %d のレーティングに基づいて
@@ -385,6 +391,12 @@
循環供給量
取引可能で市場に流通しているコインの総数
循環供給量
+ 取引所が見つかりません
+ 取引所
+ 注意
+ 危険
+ 信頼できる
+ 取引所
経験豊富な買い手
少なくとも100の発信取引を持つネット・バイヤー
経験豊富な買い手
@@ -402,6 +414,7 @@
指定された期間中のトークンに利用可能な流動性の変化
流動性
流動性指数
+ 上場先
低い
時価総額
暗号資産の市場価値の合計。コインの現在の価格と、流通しているコインの総数を掛けて計算されます。
@@ -424,6 +437,7 @@
取引量(24時間)
過去24時間以内に取引された暗号資産の合計額。市場の活発さと流動性を示します。
取引量(24時間)
+ 取引量
これをドラッグするか、検索窓をタップして、マーケットから直接トークンを追加します
トークンを追加
お使いのデバイスではNFCが使用できません
@@ -712,7 +726,10 @@
手動
ブロック毎
毎日
+ %sごと
毎日
+ %1$s日ごとに
+ %1$s秒毎
エポック毎
時代毎
毎時間
@@ -723,6 +740,7 @@
もっとステーキングする
%1$sをステーキングし、年間 %2$sを受け取ります
タップしてロック解除
+ タップしてロック解除もしくは投票
タップして引き出す
%sをステーキングする
%sのステーキング解除
@@ -735,8 +753,9 @@
ステーキング解除中の資産%s
バリデーター
バリデーター
+ 戦略的パートナー
投票する
- 投票はロックされています
+ 投票する
引き出す
あなたのステーキング
カード内に秘密鍵を保管しながら暗号資産を安全に保管します
diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml
index 6f25020e8d..e8db31eab3 100644
--- a/core/res/src/main/res/values-ru/strings.xml
+++ b/core/res/src/main/res/values-ru/strings.xml
@@ -101,6 +101,12 @@
- %d дней
- %d дней
+
+ - день
+ - дня
+ - дней
+ - дней
+
Удалить
Отключено
Готово
@@ -382,6 +388,12 @@
Лидеры падения
В тренде
О %s
+
+ - %d биржа
+ - %d биржи
+ - %d бирж
+ - %d бирж
+
- На основе %d оценки
- На основе %d оценок
@@ -395,6 +407,12 @@
Циркулир. предл.
Общее количество монет, доступных для торговли и находящихся в обращении на рынке
Циркулирующее предложение
+ Биржи не найдены
+ Биржа
+ Осторожно
+ Рискованно
+ Надежно
+ Биржи
Опытные трейдеры
Покупатели, у которых было как минимум 100 исходящих транзакций.
Опытные трейдеры
@@ -412,6 +430,7 @@
Изменение объема ликвидности, доступной для токена в течение указанного периода времени.
Ликвидность
Индекс ликвидности
+ Листинг на
Низкий
Рын. кап.
Общая рыночная стоимость криптовалюты, рассчитываемая путем умножения текущей цены монеты на общее количество монет в обращении.
@@ -434,6 +453,7 @@
Объем торгов (24ч)
Общая сумма криптовалюты, которая была продана за последние 24 часа, показывающая уровень активности и ликвидности на рынке.
Объем торгов (24ч)
+ Объем
Потяните вверх или коснитесь поисковой строки, чтобы добавить токены напрямую из рынка
Добавить токены
Функция NFC недоступна на вашем устройстве
@@ -509,7 +529,7 @@
Подготовьте основную карту с номером %s
Ваша карта настроена и готова к использованию.
Добавлено максимальное количество карт. Завершите процесс резервного копирования.
- Активация карты
+ Активация кошелька
Резервная карта #%d
Нет резервных карт
Уведомления
@@ -734,6 +754,8 @@
За блок
Ежедневно
Каждый день
+ Каждые %1$s дня
+ Каждые %1$s сек
За эпоху
За эру
Ежечасно
@@ -757,8 +779,9 @@
Завершение стейкинга %s
Валидатор
Валидаторы
+ Стратегический партнер
Проголосовать
- Голосование заблокировано
+ Проголосовать
Вывод
Застейканные средства
Держите свои криптосбережения в безопасности. Приватные ключи надежно хранятся на карте.
diff --git a/core/res/src/main/res/values-uk-rUA/strings.xml b/core/res/src/main/res/values-uk-rUA/strings.xml
index 611026a7cb..5a9fb13979 100644
--- a/core/res/src/main/res/values-uk-rUA/strings.xml
+++ b/core/res/src/main/res/values-uk-rUA/strings.xml
@@ -737,6 +737,7 @@
Блок
День
Щодня
+ Кожні %1$s сек
Епоха
Ера
Година
@@ -759,6 +760,7 @@
Виведення зі стейкінгу %s
Валідатор
Валідатори
+ Стратегічний партнер
Проголосувати
Голос заблоковано
Зняти
diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml
index 3e97f225bf..7d4c202a25 100644
--- a/core/res/src/main/res/values/strings.xml
+++ b/core/res/src/main/res/values/strings.xml
@@ -97,6 +97,10 @@
- %d day
- %d days
+
+ - day
+ - days
+
Delete
Disabled
Done
@@ -378,6 +382,10 @@
Top Losers
Trending
About %s
+
+ - %d exchange
+ - %d exchanges
+
- Based on %d rating
- Based on %d ratings
@@ -389,6 +397,12 @@
Circulating supply
The total number of coins that are available for trading and are circulating in the market
Circulating supply
+ No exchanges found
+ Exchange
+ Caution
+ Risky
+ Trusted
+ Exchanges
Experienced buyers
Net buyers with the additional requirement of having at least 100 outgoing transactions
Experienced buyers
@@ -406,6 +420,7 @@
The change in how much liquidity is available for the token during the specified timeframe
Liquidity
Liquidity index
+ Listed on
Low
Market cap
The total market value of a cryptocurrency, calculated by multiplying the current price of the coin by the total number of coins in circulation
@@ -428,6 +443,7 @@
Trading volume (24h)
The total amount of a cryptocurrency that has been traded within the last 24 hours, indicating the level of activity and liquidity in the market
Trading volume (24h)
+ Volume
Pull this up or tap the search bar to add tokens directly from the market
Add tokens
NFC is not available on your device
@@ -499,7 +515,7 @@
Prepare the primary card with number %s
Your wallet card is configured and ready for use.
Max number of cards added. Finalize the backup process.
- Activating card
+ Activating wallet
Backup card #%d
No backup cards
Notifications
@@ -679,7 +695,7 @@
Reward claiming
Method of receiving staking rewards.\nIt can be either automatic, where the reward is credited to your address, or manual, where you need to withdraw the reward by creating a transaction to receive it.
Reward schedule
- This is a schedule that determines when participants in staking receive their rewards.
+ This is a schedule that determines when participants in staking receive their rewards. The reward distribution time may vary slightly depending on the validator and network load.
Rewards: %s
Staking %s
Unbonding Period
@@ -720,7 +736,10 @@
Manual
Per Block
Daily
- Daily
+ Each %s
+ Each day
+ Each %1$s days
+ Each %1$s sec
Per Epoch
Per Era
Hourly
@@ -744,8 +763,9 @@
Unstaking assets %s
Validator
Validators
+ Strategic partner
Vote
- Vote locked
+ Vote
Withdraw
Your stakes
Store your crypto assets secure while keeping private keys contained in your card
diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageBase.kt b/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageBase.kt
index bd65f92ab5..36c14965b1 100644
--- a/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageBase.kt
+++ b/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageBase.kt
@@ -24,7 +24,6 @@ import com.tangem.core.ui.components.inputrow.inner.InputRowAsyncImage
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resolveAnnotatedReference
import com.tangem.core.ui.extensions.resolveReference
-import com.tangem.core.ui.res.TangemColorPalette
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
@@ -33,15 +32,17 @@ import com.tangem.core.ui.res.TangemThemePreview
* [Input Row Image](https://www.figma.com/design/14ISV23YB1yVW1uNVwqrKv/Android?node-id=2841-1589&t=u6pOF6lsdpvWLELb-4)
*
* @param subtitle subtitle text
- * @param caption caption text
* @param modifier modifier
+ * @param caption caption text
* @param imageUrl icon to load
+ * @param iconRes icon resource
* @param subtitleColor subtitle text color
* @param captionColor caption text color
+ * @param iconTint icon tint
* @param isGrayscaleImage whether to display grayscale image
- * @param subtitleEndIconRes icon to show after subtitle
* @param iconEndRes icon to end of row
* @param onImageError composable to show if image loading failed
+ * @param subtitleExtraContent subtitle extra content
* @param extraContent extra content
*/
@Suppress("LongMethod")
@@ -56,10 +57,9 @@ internal fun InputRowImageBase(
captionColor: Color = TangemTheme.colors.text.tertiary,
iconTint: Color = TangemTheme.colors.icon.informative,
isGrayscaleImage: Boolean = false,
- @DrawableRes subtitleEndIconRes: Int? = null,
- subtitleEndIconTint: Color = TangemColorPalette.Azure,
@DrawableRes iconEndRes: Int? = null,
onImageError: (@Composable () -> Unit)? = null,
+ subtitleExtraContent: (@Composable RowScope.() -> Unit)? = null,
extraContent: (@Composable RowScope.() -> Unit)? = null,
) {
Row(
@@ -100,10 +100,7 @@ internal fun InputRowImageBase(
style = TangemTheme.typography.subtitle2,
color = subtitleColor,
)
- SubtitleEndIconRes(
- subtitleEndIconRes = subtitleEndIconRes,
- subtitleEndIconTint = subtitleEndIconTint,
- )
+ subtitleExtraContent?.invoke(this)
}
if (caption != null) {
Text(
@@ -124,23 +121,6 @@ internal fun InputRowImageBase(
}
}
-@Composable
-private fun RowScope.SubtitleEndIconRes(subtitleEndIconRes: Int?, subtitleEndIconTint: Color) {
- AnimatedVisibility(
- visible = subtitleEndIconRes != null,
- label = "Subtitle end icon visibility animation",
- modifier = Modifier.align(Alignment.CenterVertically),
- ) {
- val icon = remember(this) { requireNotNull(subtitleEndIconRes) }
- Icon(
- painter = rememberVectorPainter(image = ImageVector.vectorResource(id = icon)),
- tint = subtitleEndIconTint,
- contentDescription = null,
- modifier = Modifier.padding(start = TangemTheme.dimens.spacing4),
- )
- }
-}
-
@Composable
private fun RowScope.InputRowEndIcon(iconRes: Int?) {
AnimatedVisibility(
diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageInfo.kt b/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageInfo.kt
index 366bd4e48d..c908519e10 100644
--- a/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageInfo.kt
+++ b/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageInfo.kt
@@ -2,14 +2,21 @@ package com.tangem.core.ui.components.inputrow
import android.content.res.Configuration
import androidx.annotation.DrawableRes
+import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.padding
+import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.vector.ImageVector
+import androidx.compose.ui.graphics.vector.rememberVectorPainter
+import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
@@ -17,6 +24,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import com.tangem.core.ui.R
import com.tangem.core.ui.components.atoms.text.EllipsisText
import com.tangem.core.ui.extensions.*
+import com.tangem.core.ui.res.TangemColorPalette
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
@@ -24,17 +32,19 @@ import com.tangem.core.ui.res.TangemThemePreview
* Input row component with selector
* [Input Row Image](https://www.figma.com/design/14ISV23YB1yVW1uNVwqrKv/Android?node-id=2841-1589&t=u6pOF6lsdpvWLELb-4)
*
- * @param title title text
* @param subtitle subtitle text
- * @param caption caption text
* @param infoTitle info title text
- * @param infoSubtitle info subtitle text
* @param modifier modifier
+ * @param title title text
+ * @param caption caption text
+ * @param infoSubtitle info subtitle text
* @param imageUrl icon to load
+ * @param iconRes icon resource
* @param subtitleColor subtitle text color
* @param captionColor caption text color
+ * @param iconTint icon color
* @param isGrayscaleImage whether to display grayscale image
- * @param showPendingIcon whether to show pending icon
+ * @param subtitleEndIconRes subtitle icon to end of row
* @param iconEndRes icon to end of row
* @param onImageError composable to show if image loading failed
*/
@@ -78,9 +88,14 @@ fun InputRowImageInfo(
subtitleColor = subtitleColor,
captionColor = captionColor,
isGrayscaleImage = isGrayscaleImage,
- subtitleEndIconRes = subtitleEndIconRes,
iconEndRes = iconEndRes,
onImageError = onImageError,
+ subtitleExtraContent = {
+ SubtitleEndIconRes(
+ subtitleEndIconRes = subtitleEndIconRes,
+ subtitleEndIconTint = TangemColorPalette.Azure,
+ )
+ },
) {
Column(
verticalArrangement = Arrangement.spacedBy(TangemTheme.dimens.spacing2),
@@ -120,6 +135,23 @@ fun InputRowImageInfo(
}
}
+@Composable
+private fun RowScope.SubtitleEndIconRes(subtitleEndIconRes: Int?, subtitleEndIconTint: Color) {
+ AnimatedVisibility(
+ visible = subtitleEndIconRes != null,
+ label = "Subtitle end icon visibility animation",
+ modifier = Modifier.align(Alignment.CenterVertically),
+ ) {
+ val icon = remember(this) { requireNotNull(subtitleEndIconRes) }
+ Icon(
+ painter = rememberVectorPainter(image = ImageVector.vectorResource(id = icon)),
+ tint = subtitleEndIconTint,
+ contentDescription = null,
+ modifier = Modifier.padding(start = TangemTheme.dimens.spacing4),
+ )
+ }
+}
+
// region Preview
@Preview(showBackground = true, widthDp = 360)
@Preview(showBackground = true, widthDp = 360, uiMode = Configuration.UI_MODE_NIGHT_YES)
diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageSelector.kt b/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageSelector.kt
index 287edc1197..a9921a83b5 100644
--- a/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageSelector.kt
+++ b/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageSelector.kt
@@ -4,6 +4,7 @@ import android.content.res.Configuration
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource
+import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ripple
import androidx.compose.runtime.Composable
@@ -40,8 +41,9 @@ import java.math.BigDecimal
* @param subtitleColor subtitle text color
* @param captionColor caption text color
* @param isSelected true if selected
- * @param selectorContent selector content
* @param onImageError composable to show if image loading failed
+ * @param subtitleExtraContent subtitle selector content
+ * @param selectorContent selector content
*/
@Composable
fun InputRowImageSelector(
@@ -54,6 +56,7 @@ fun InputRowImageSelector(
captionColor: Color = TangemTheme.colors.text.tertiary,
isSelected: Boolean = false,
onImageError: (@Composable () -> Unit)? = null,
+ subtitleExtraContent: (@Composable RowScope.() -> Unit)? = null,
selectorContent: @Composable ((isSelected: Boolean, isEnabled: Boolean, onSelect: () -> Unit) -> Unit),
) {
InputRowImageBase(
@@ -63,6 +66,7 @@ fun InputRowImageSelector(
subtitleColor = subtitleColor,
captionColor = captionColor,
onImageError = onImageError,
+ subtitleExtraContent = subtitleExtraContent,
modifier = modifier
.clickable(
onClick = onSelect,
diff --git a/data/staking/src/main/java/com/tangem/data/staking/converters/YieldConverter.kt b/data/staking/src/main/java/com/tangem/data/staking/converters/YieldConverter.kt
index 2ff434f089..7499cb4a34 100644
--- a/data/staking/src/main/java/com/tangem/data/staking/converters/YieldConverter.kt
+++ b/data/staking/src/main/java/com/tangem/data/staking/converters/YieldConverter.kt
@@ -123,6 +123,7 @@ class YieldConverter(
stakedBalance = validatorDTO.stakedBalance,
votingPower = validatorDTO.votingPower,
preferred = validatorDTO.preferred,
+ isStrategicPartner = isStrategicPartner(validatorDTO.address),
)
}
@@ -174,4 +175,12 @@ class YieldConverter(
else -> Yield.Args.ArgType.UNKNOWN
}
}
+
+ private fun isStrategicPartner(validatorAddress: String): Boolean = PARTNERS.any { it == validatorAddress }
+
+ private companion object {
+ val PARTNERS = listOf(
+ "cosmosvaloper1wrx0x9m9ykdhw9sg04v7uljme53wuj03aa5d4f",
+ )
+ }
}
\ No newline at end of file
diff --git a/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/stakekit/Yield.kt b/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/stakekit/Yield.kt
index c65303fd35..768d65cbf4 100644
--- a/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/stakekit/Yield.kt
+++ b/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/stakekit/Yield.kt
@@ -62,6 +62,7 @@ data class Yield(
val stakedBalance: String? = null,
val votingPower: Double? = null,
val preferred: Boolean,
+ val isStrategicPartner: Boolean,
) {
enum class ValidatorStatus {
diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/ConfirmationStatePreviewData.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/ConfirmationStatePreviewData.kt
index e68d171b89..d9c7263d8e 100644
--- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/ConfirmationStatePreviewData.kt
+++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/ConfirmationStatePreviewData.kt
@@ -28,6 +28,7 @@ internal object ConfirmationStatePreviewData {
website = "https://luganodes.com/",
votingPower = 0.09778360195377911,
preferred = true,
+ isStrategicPartner = false,
),
Yield.Validator(
address = "0x35b1ca0f398905cf752e6fe122b51c88022fca32",
@@ -40,6 +41,7 @@ internal object ConfirmationStatePreviewData {
website = "https://infstones.com/",
votingPower = 0.0034366257754399774,
preferred = true,
+ isStrategicPartner = false,
),
Yield.Validator(
address = "0xd14a87025109013b0a2354a775cb335f926af65a",
@@ -52,6 +54,7 @@ internal object ConfirmationStatePreviewData {
website = "https://infstones.com/",
votingPower = 0.023487238579718264,
preferred = true,
+ isStrategicPartner = true,
),
)
diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/InitialStakingStatePreview.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/InitialStakingStatePreview.kt
index e42df87aba..d3890582f5 100644
--- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/InitialStakingStatePreview.kt
+++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/InitialStakingStatePreview.kt
@@ -86,6 +86,7 @@ internal object InitialStakingStatePreview {
stakedBalance = null,
votingPower = null,
preferred = false,
+ isStrategicPartner = false,
),
pendingActions = persistentListOf(),
isClickable = true,
diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingValidatorListContent.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingValidatorListContent.kt
index c86ebb7e95..9ddda86f32 100644
--- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingValidatorListContent.kt
+++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingValidatorListContent.kt
@@ -5,16 +5,22 @@ import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Icon
+import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.platform.LocalDensity
+import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
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.components.inputrow.InputRowImageSelector
import com.tangem.core.ui.decorations.roundedShapeItemDecoration
import com.tangem.core.ui.extensions.*
@@ -78,6 +84,9 @@ internal fun StakingValidatorListContent(
false,
)
.background(TangemTheme.colors.background.action),
+ subtitleExtraContent = {
+ ValidatorLabel(item.isStrategicPartner)
+ },
selectorContent = { checked, _, _ ->
AnimatedVisibility(
modifier = Modifier,
@@ -99,6 +108,23 @@ internal fun StakingValidatorListContent(
}
}
+@Composable
+private fun RowScope.ValidatorLabel(isStrategicPartner: Boolean) {
+ if (isStrategicPartner) {
+ Text(
+ text = stringResource(R.string.staking_validators_label),
+ style = TangemTheme.typography.caption1,
+ color = TangemTheme.colors.icon.constant,
+ modifier = Modifier
+ .align(Alignment.CenterVertically)
+ .padding(horizontal = 6.dp)
+ .clip(RoundedCornerShape(6.dp))
+ .background(TangemTheme.colors.text.accent)
+ .padding(horizontal = 8.dp),
+ )
+ }
+}
+
// region Preview
@Preview(showBackground = true, widthDp = 360)
@Preview(showBackground = true, widthDp = 360, uiMode = Configuration.UI_MODE_NIGHT_YES)