commit f861958b275347fabe058a258e924f2d76eed63f
parent 0ac9851f6db6ae3d45105ee76c5f574acc84deb0
Author: Iván Ávalos <avalos@disroot.org>
Date: Wed, 29 Apr 2026 23:38:13 +0200
[wallet] improved green/success colors
Diffstat:
6 files changed, 67 insertions(+), 13 deletions(-)
diff --git a/wallet/src/main/java/net/taler/wallet/balances/BalancesComposable.kt b/wallet/src/main/java/net/taler/wallet/balances/BalancesComposable.kt
@@ -44,7 +44,6 @@ import androidx.compose.material3.ProvideTextStyle
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
-import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
@@ -60,6 +59,7 @@ import net.taler.wallet.compose.LoadingScreen
import net.taler.wallet.compose.TalerSurface
import net.taler.wallet.compose.cardPaddings
import net.taler.wallet.donau.DonauSummaryItem
+import net.taler.wallet.ui.theme.TalerTheme
// TODO: rename to AssetsComposable
@Composable
@@ -252,7 +252,7 @@ fun PendingComposable(
R.string.balances_inbound_amount,
balance.pendingIncoming.toString(showSymbol = false),
),
- color = colorResource(R.color.green),
+ color = TalerTheme.extraColors.success,
)
}
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailScreen.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailScreen.kt
@@ -46,7 +46,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
@@ -76,6 +75,7 @@ import net.taler.wallet.peer.TransactionPeerPullDebitComposable
import net.taler.wallet.peer.TransactionPeerPushCreditComposable
import net.taler.wallet.peer.TransactionPeerPushDebitComposable
import net.taler.wallet.refund.TransactionRefundComposable
+import net.taler.wallet.ui.theme.TalerTheme
import net.taler.wallet.withdraw.TransactionWithdrawalComposable
@Composable
@@ -441,7 +441,7 @@ fun TransactionAmountComposable(
textAlign = TextAlign.Center,
fontSize = 24.sp,
color = when (amountType) {
- AmountType.Positive -> colorResource(R.color.green)
+ AmountType.Positive -> TalerTheme.extraColors.success
AmountType.Negative -> MaterialTheme.colorScheme.error
AmountType.Neutral -> Color.Unspecified
},
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionStateComposable.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionStateComposable.kt
@@ -54,6 +54,7 @@ import net.taler.wallet.transactions.TransactionMinorState.KycInit
import net.taler.wallet.transactions.TransactionMinorState.KycRequired
import net.taler.wallet.transactions.TransactionMinorState.Repurchase
import net.taler.wallet.transactions.WithdrawalDetails.ManualTransfer
+import net.taler.wallet.ui.theme.TalerTheme
@Composable
fun TransactionStateComposable(
@@ -85,7 +86,7 @@ fun TransactionStateComposable(
}
val cardColor = when (state) {
- TransactionState(Done) -> colorResource(R.color.green)
+ TransactionState(Done) -> TalerTheme.extraColors.successContainer
TransactionState(Pending),
TransactionState(Suspended),
TransactionState(Failed, Repurchase),
@@ -98,7 +99,7 @@ fun TransactionStateComposable(
}
val textColor = when (state) {
- TransactionState(Done) -> Color.White
+ TransactionState(Done) -> TalerTheme.extraColors.onSuccessContainer
TransactionState(Pending),
TransactionState(Suspended),
TransactionState(Failed, Repurchase),
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionsComposable.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionsComposable.kt
@@ -55,7 +55,6 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalHapticFeedback
-import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
@@ -75,7 +74,6 @@ import net.taler.wallet.balances.ScopeInfo.Exchange
import net.taler.wallet.cleanExchange
import net.taler.wallet.compose.Banner
import net.taler.wallet.compose.LoadingScreen
-import net.taler.wallet.compose.NewMenuItem
import net.taler.wallet.compose.TalerSurface
import net.taler.wallet.compose.cardPaddings
import net.taler.wallet.main.ViewMode
@@ -101,6 +99,7 @@ import net.taler.wallet.transactions.TransactionStateFilter.Nonfinal
import net.taler.wallet.transactions.TransactionsResult.Error
import net.taler.wallet.transactions.TransactionsResult.None
import net.taler.wallet.transactions.TransactionsResult.Success
+import net.taler.wallet.ui.theme.TalerTheme
@Composable
fun TransactionsComposable(
@@ -376,7 +375,7 @@ fun TransactionAmountInfo(
Positive -> Text(
stringResource(R.string.amount_positive, amountStr),
color = if (tx.txState.major == Pending || tx.txState.major == Dialog)
- Color.Unspecified else colorResource(R.color.green),
+ Color.Unspecified else TalerTheme.extraColors.success,
)
Negative -> Text(
stringResource(R.string.amount_negative, amountStr),
diff --git a/wallet/src/main/java/net/taler/wallet/ui/theme/Color.kt b/wallet/src/main/java/net/taler/wallet/ui/theme/Color.kt
@@ -54,6 +54,12 @@ val surfaceContainerLight = Color(0xFFF0F2F7)
val surfaceContainerHighLight = Color(0xFFEAECEF)
val surfaceContainerHighestLight = Color(0xFFE3E6EB)
+// extra colors
+val successLight = Color(0xFF228B22)
+val onSuccessLight = Color(0xFFFFFFFF)
+val successContainerLight = Color(0xFFC1FFC1)
+val onSuccessContainerLight = Color(0xFF003900)
+
val primaryDark = Color(0xFFB4C5FF)
val onPrimaryDark = Color(0xFF002A78)
val primaryContainerDark = Color(0xFF0042B3)
@@ -89,3 +95,9 @@ val surfaceContainerLowDark = Color(0xFF1C1B1B)
val surfaceContainerDark = Color(0xFF201F1F)
val surfaceContainerHighDark = Color(0xFF2A2A2A)
val surfaceContainerHighestDark = Color(0xFF353434)
+
+// extra colors
+val successDark = Color(0xFF81C784)
+val onSuccessDark = Color(0xFF003300)
+val successContainerDark = Color(0xFF005300)
+val onSuccessContainerDark = Color(0xFFADFFAD)
+\ No newline at end of file
diff --git a/wallet/src/main/java/net/taler/wallet/ui/theme/Theme.kt b/wallet/src/main/java/net/taler/wallet/ui/theme/Theme.kt
@@ -24,6 +24,10 @@ import androidx.compose.material3.dynamicDarkColorScheme
import androidx.compose.material3.dynamicLightColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.runtime.Immutable
+import androidx.compose.runtime.staticCompositionLocalOf
+import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
private val lightScheme = lightColorScheme(
@@ -102,6 +106,35 @@ private val darkScheme = darkColorScheme(
surfaceContainerHighest = surfaceContainerHighestDark,
)
+@Immutable
+data class TalerColorScheme(
+ val success: Color = Color.Unspecified,
+ val onSuccess: Color = Color.Unspecified,
+ val successContainer: Color = Color.Unspecified,
+ val onSuccessContainer: Color = Color.Unspecified,
+)
+
+private val talerLightScheme = TalerColorScheme(
+ success = successLight,
+ onSuccess = onSuccessLight,
+ successContainer = successContainerLight,
+ onSuccessContainer = onSuccessContainerLight,
+)
+
+private val talerDarkScheme = TalerColorScheme(
+ success = successDark,
+ onSuccess = onSuccessDark,
+ successContainer = successContainerDark,
+ onSuccessContainer = onSuccessContainerDark,
+)
+
+val LocalTalerColorScheme = staticCompositionLocalOf { talerLightScheme }
+
+object TalerTheme {
+ val extraColors: TalerColorScheme@Composable
+ get() = LocalTalerColorScheme.current
+}
+
@Composable
fun TalerTheme(
darkTheme: Boolean = isSystemInDarkTheme(),
@@ -119,8 +152,16 @@ fun TalerTheme(
else -> lightScheme
}
- MaterialTheme(
- colorScheme = colorScheme,
- content = content
- )
+ val talerColorScheme = if(darkTheme) {
+ talerDarkScheme
+ } else {
+ talerLightScheme
+ }
+
+ CompositionLocalProvider(LocalTalerColorScheme provides talerColorScheme) {
+ MaterialTheme(
+ colorScheme = colorScheme,
+ content = content
+ )
+ }
}