Updated on 2026-08-14

This commit is contained in:
Tangem 2025-09-12 16:32:29 +05:00
parent 8b9642ba7e
commit c5e437586b
8 changed files with 102 additions and 23 deletions

View file

@ -1657,7 +1657,7 @@
<string name="yield_module_promo_screen_self_custodial_subtitle">Aaveは世界中で何百万人もの人々に信頼されています。総貸付額は104億ドルです。</string>
<string name="yield_module_promo_screen_self_custodial_title">分散型・自己管理型</string>
<string name="yield_module_promo_screen_terms_disclaimer">サービスを使用することにより、プロバイダーに同意したものとみなされます</string>
<string name="yield_module_promo_screen_title">年間%s%の収益</string>
<string name="yield_module_promo_screen_title">年間%s%%の収益</string>
<string name="yield_module_promo_screen_variable_rate_info">Aave • 変動金利</string>
<string name="yield_module_provider">Aave</string>
<string name="yield_module_rate_info_sheet_chart_average">平均%s</string>

View file

@ -200,6 +200,7 @@
<string name="common_camera_denied_alert_message">You have not given access to your camera, please adjust your privacy settings</string>
<string name="common_cancel">Cancel</string>
<string name="common_change">Change</string>
<string name="common_choose_account">Choose account</string>
<string name="common_choose_action">Choose action</string>
<string name="common_choose_network">Choose network</string>
<string name="common_choose_token">Choose token</string>
@ -1266,6 +1267,14 @@
<string name="swapping_to_title">You receive</string>
<string name="swapping_token_list_title">Choose token</string>
<string name="swapping_token_not_available">not available</string>
<string name="tangempay_onboarding_get_card_button_text">Get card</string>
<string name="tangempay_onboarding_pay_description">Add to your wallet and pay with your phone anywhere.</string>
<string name="tangempay_onboarding_pay_title">Apple Pay &amp; Google Pay</string>
<string name="tangempay_onboarding_purchases_description">Use your USDC balance to pay for everyday purchases seamlessly.</string>
<string name="tangempay_onboarding_purchases_title">Everyday purchases</string>
<string name="tangempay_onboarding_security_description">Your card details are protected — full control in the app.</string>
<string name="tangempay_onboarding_security_title">Built-in security</string>
<string name="tangempay_onboarding_title">Get your free Crypto Card\nin minutes</string>
<string name="this_is_my_wallet_title">This is my wallet</string>
<string name="toast_balances_hidden">Balances hidden</string>
<string name="toast_balances_shown">Balances shown</string>
@ -1414,14 +1423,6 @@
<string name="visa_unlock_notification_button">Unlock</string>
<string name="visa_unlock_notification_subtitle">Scan your card to unlock access</string>
<string name="visa_unlock_notification_title">Needed unlock</string>
<string name="tangempay_onboarding_title">Get your free Crypto Card\nin minutes</string>
<string name="tangempay_onboarding_security_title">Built-in security</string>
<string name="tangempay_onboarding_security_description">Your card details are protected — full control in the app.</string>
<string name="tangempay_onboarding_purchases_title">Everyday purchases</string>
<string name="tangempay_onboarding_purchases_description">Use your USDC balance to pay for everyday purchases seamlessly.</string>
<string name="tangempay_onboarding_pay_title">Apple Pay &amp; Google Pay</string>
<string name="tangempay_onboarding_pay_description">Add to your wallet and pay with your phone anywhere.</string>
<string name="tangempay_onboarding_get_card_button_text">Get card</string>
<string name="wallet_balance_blockchain_unreachable_try_later">Blockchain is unreachable. Try later</string>
<string name="wallet_balance_missing_derivation">Scan card or ring</string>
<string name="wallet_been_activated_message">This wallet has already been activated earlier.\nIf it was not done by you, please contact support.\nTangem never sells wallets along with pre-generated access codes.</string>
@ -1732,8 +1733,8 @@
<string name="yield_module_promo_screen_how_it_works_button_title">How it works?</string>
<string name="yield_module_promo_screen_self_custodial_subtitle">Aave is trusted by millions worldwide. Total lended value is $10.4B.</string>
<string name="yield_module_promo_screen_self_custodial_title">Decentralized and self-custodial</string>
<string name="yield_module_promo_screen_terms_disclaimer">By using service, you agree with provider</string>
<string name="yield_module_promo_screen_title">Earn %s% yearly</string>
<string name="yield_module_promo_screen_terms_disclaimer">By using service, you agree with provider %1$s and %2$s</string>
<string name="yield_module_promo_screen_title">Earn %s%% yearly</string>
<string name="yield_module_promo_screen_variable_rate_info">Aave • Variable Interest Rate</string>
<string name="yield_module_provider">Aave</string>
<string name="yield_module_rate_info_sheet_chart_average">Avg %s</string>

View file

@ -2,19 +2,22 @@ package com.tangem.core.ui.components.label
import android.content.res.Configuration
import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.animateColorAsState
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.*
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.tangem.core.ui.R
import com.tangem.core.ui.components.label.entity.LabelStyle
import com.tangem.core.ui.components.label.entity.LabelUM
import com.tangem.core.ui.extensions.TextReference
@ -48,8 +51,18 @@ fun Label(state: LabelUM, modifier: Modifier = Modifier) {
},
)
val iconColor by animateColorAsState(
targetValue = when (state.style) {
LabelStyle.ACCENT -> TangemTheme.colors.icon.accent
LabelStyle.REGULAR -> TangemTheme.colors.icon.informative
LabelStyle.WARNING -> TangemTheme.colors.icon.warning
},
)
AnimatedContent(targetState = state.text) { text ->
Box(
Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(4.dp),
modifier = modifier
.padding(horizontal = 4.dp)
.background(
@ -63,6 +76,15 @@ fun Label(state: LabelUM, modifier: Modifier = Modifier) {
style = TangemTheme.typography.caption1,
color = textColor,
)
AnimatedVisibility(state.icon != null) {
val wrappedIcon = remember(this) { requireNotNull(state.icon) }
Icon(
imageVector = ImageVector.vectorResource(wrappedIcon),
tint = iconColor,
contentDescription = null,
modifier = Modifier.size(16.dp),
)
}
}
}
}
@ -73,6 +95,7 @@ fun Label(state: LabelUM, modifier: Modifier = Modifier) {
private fun LabelPreview() {
TangemThemePreview {
Column(
verticalArrangement = Arrangement.spacedBy(8.dp),
modifier = Modifier.padding(16.dp),
) {
Label(
@ -81,24 +104,39 @@ private fun LabelPreview() {
style = LabelStyle.REGULAR,
),
)
Spacer(modifier = Modifier.height(8.dp))
Label(
state = LabelUM(
text = TextReference.Str("Accent Label"),
style = LabelStyle.ACCENT,
),
)
Spacer(modifier = Modifier.height(8.dp))
Label(
state = LabelUM(
text = TextReference.Str("Warning Label"),
style = LabelStyle.WARNING,
),
)
Label(
state = LabelUM(
text = TextReference.Str("Regular Label"),
style = LabelStyle.REGULAR,
icon = R.drawable.ic_information_24,
),
)
Label(
state = LabelUM(
text = TextReference.Str("Accent Label"),
style = LabelStyle.ACCENT,
icon = R.drawable.ic_information_24,
),
)
Label(
state = LabelUM(
text = TextReference.Str("Warning Label"),
style = LabelStyle.WARNING,
icon = R.drawable.ic_information_24,
),
)
}
}
}

View file

@ -1,10 +1,13 @@
package com.tangem.core.ui.components.label.entity
import androidx.annotation.DrawableRes
import com.tangem.core.ui.extensions.TextReference
data class LabelUM(
val text: TextReference,
val style: LabelStyle,
@DrawableRes val icon: Int? = null,
val onIconClick: (() -> Unit)? = null,
)
enum class LabelStyle {

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12.058,1.75C14.248,1.75 15.968,1.75 17.312,1.931C18.688,2.116 19.781,2.503 20.639,3.361C21.497,4.22 21.884,5.312 22.069,6.688C22.25,8.032 22.25,9.752 22.25,11.942V12.058C22.25,14.248 22.25,15.968 22.069,17.312C21.884,18.688 21.497,19.781 20.639,20.639C19.781,21.497 18.688,21.884 17.312,22.069C15.968,22.25 14.248,22.25 12.058,22.25H11.942C9.752,22.25 8.032,22.25 6.688,22.069C5.312,21.884 4.22,21.497 3.361,20.639C2.503,19.781 2.116,18.688 1.931,17.312C1.75,15.968 1.75,14.248 1.75,12.058V11.942C1.75,9.752 1.75,8.032 1.931,6.688C2.116,5.312 2.503,4.22 3.361,3.361C4.22,2.503 5.312,2.116 6.688,1.931C8.032,1.75 9.752,1.75 11.942,1.75H12.058ZM7,15.25C6.586,15.25 6.25,15.586 6.25,16V18C6.25,18.414 6.586,18.75 7,18.75C7.414,18.75 7.75,18.414 7.75,18V16C7.75,15.586 7.414,15.25 7,15.25ZM12,14.25C11.586,14.25 11.25,14.586 11.25,15V18C11.25,18.414 11.586,18.75 12,18.75C12.414,18.75 12.75,18.414 12.75,18V15C12.75,14.586 12.414,14.25 12,14.25ZM17,12.25C16.586,12.25 16.25,12.586 16.25,13V18C16.25,18.414 16.586,18.75 17,18.75C17.414,18.75 17.75,18.414 17.75,18V13C17.75,12.586 17.414,12.25 17,12.25ZM15.858,5.252C15.654,5.261 15.416,5.301 15.179,5.34C15.168,5.342 15.157,5.344 15.146,5.346L13.878,5.555C13.469,5.622 13.192,6.008 13.26,6.417C13.327,6.826 13.713,7.103 14.122,7.035L14.846,6.915C12.963,9.557 9.953,10.75 6,10.75C5.586,10.75 5.25,11.086 5.25,11.5C5.25,11.914 5.586,12.25 6,12.25C10.322,12.25 13.898,10.906 16.132,7.694L16.279,8.207C16.394,8.605 16.809,8.835 17.207,8.721C17.605,8.606 17.835,8.191 17.721,7.793L17.403,6.683C17.4,6.671 17.396,6.66 17.393,6.648C17.335,6.446 17.272,6.223 17.19,6.041C17.089,5.819 16.93,5.582 16.645,5.42C16.369,5.263 16.09,5.241 15.858,5.252Z"
android:fillColor="#0099FF"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M13.608,1.147C14.314,1.448 14.797,2.163 14.797,3.017L14.798,9.785C14.798,9.895 14.887,9.985 14.998,9.985H18.099C18.985,9.985 19.595,10.583 19.847,11.21C20.097,11.837 20.064,12.642 19.563,13.285L12.564,22.268C12.003,22.988 11.12,23.163 10.392,22.852C9.685,22.551 9.202,21.837 9.202,20.983L9.202,14.215C9.202,14.104 9.112,14.015 9.002,14.015H5.9C5.014,14.015 4.404,13.417 4.153,12.789C3.902,12.163 3.936,11.358 4.437,10.715L11.435,1.732C11.996,1.011 12.879,0.837 13.608,1.147Z"
android:fillColor="#0099FF"/>
</vector>

View file

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12,0.59C18.302,0.59 23.41,5.698 23.41,12C23.41,18.302 18.302,23.41 12,23.41C5.698,23.41 0.59,18.302 0.59,12C0.59,5.698 5.698,0.59 12,0.59ZM18.057,10.834C17.616,10.857 17.277,11.233 17.299,11.674C17.375,13.168 16.842,14.685 15.702,15.825C13.794,17.733 10.829,17.937 8.693,16.438L9.295,16.381C9.734,16.339 10.057,15.948 10.016,15.509C9.973,15.069 9.581,14.746 9.142,14.788L6.631,15.028C6.191,15.071 5.868,15.462 5.91,15.901L6.15,18.413C6.192,18.853 6.584,19.175 7.023,19.133C7.463,19.09 7.785,18.701 7.743,18.262L7.688,17.688C10.454,19.691 14.342,19.448 16.834,16.957C18.307,15.484 18.995,13.52 18.896,11.593C18.874,11.152 18.498,10.811 18.057,10.834ZM16.77,4.914C16.33,4.956 16.008,5.347 16.05,5.786L16.104,6.361C13.338,4.357 9.451,4.599 6.959,7.091C5.486,8.564 4.797,10.528 4.896,12.455C4.918,12.896 5.294,13.235 5.735,13.213C6.176,13.19 6.516,12.815 6.494,12.374C6.418,10.88 6.951,9.362 8.091,8.222C9.999,6.314 12.965,6.112 15.1,7.61L14.497,7.667C14.058,7.709 13.736,8.099 13.777,8.539C13.82,8.979 14.211,9.302 14.65,9.26L17.161,9.019C17.601,8.977 17.924,8.586 17.882,8.146L17.643,5.635C17.601,5.195 17.209,4.872 16.77,4.914Z"
android:fillColor="#0099FF"
android:fillType="evenOdd"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M11.999,1.25C13.68,1.25 15.048,1.818 16.24,2.436C16.601,2.622 16.936,2.807 17.256,2.983C18.039,3.415 18.733,3.797 19.495,4.04C19.942,4.183 20.338,4.31 20.619,4.42C20.883,4.523 21.198,4.665 21.421,4.913C21.621,5.136 21.724,5.385 21.792,5.624C21.854,5.841 21.907,6.135 21.958,6.417C23.196,13.282 20.492,19.787 13.882,22.318C13.232,22.567 12.753,22.75 12.002,22.75C11.251,22.75 10.773,22.567 10.123,22.318C3.513,19.788 0.806,13.283 2.044,6.417C2.095,6.135 2.147,5.841 2.209,5.624C2.277,5.385 2.381,5.136 2.581,4.913C2.804,4.666 3.118,4.523 3.382,4.42C3.663,4.31 4.06,4.183 4.507,4.04C5.268,3.797 5.962,3.415 6.744,2.983L7.236,2.713C7.405,2.621 7.579,2.529 7.759,2.436C8.951,1.818 10.318,1.25 11.999,1.25ZM17.942,8.666C17.758,8.146 17.187,7.873 16.666,8.058C15.788,8.369 14.948,8.961 14.212,9.607C13.465,10.262 12.767,11.023 12.174,11.734C11.735,12.261 11.345,12.769 11.03,13.199C10.742,12.854 10.454,12.601 10.18,12.418C9.905,12.235 9.552,12 9,12C8.448,12 8,12.448 8,13C8,13.521 8.398,13.949 8.906,13.996C9.11,14.015 9.665,14.566 10.106,15.447C10.267,15.77 10.589,15.981 10.949,15.999C11.309,16.017 11.651,15.84 11.844,15.536C11.849,15.529 12.193,15.013 12.357,14.78C12.689,14.311 13.157,13.677 13.709,13.016C14.263,12.352 14.888,11.675 15.53,11.111C16.183,10.539 16.8,10.132 17.334,9.943C17.855,9.759 18.127,9.187 17.942,8.666Z"
android:fillColor="#0099FF"/>
</vector>