gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taler-android] branch master updated (c2a9681 -> a190a2d)


From: gnunet
Subject: [taler-taler-android] branch master updated (c2a9681 -> a190a2d)
Date: Tue, 31 Jan 2023 14:39:48 +0100

This is an automated email from the git hooks/post-receive script.

torsten-grote pushed a change to branch master
in repository taler-android.

    from c2a9681  [wallet] Release version v0.9.1
     new c1684e6  [wallet] Experimental port to Material 3
     new 9c25371  [wallet] Fixed status bar foreground on light mode
     new 4f31626  [wallet] Added colors created with M3 Theme Builder
     new 7262064  [wallet] Fixed icon color on scan QR button
     new 47272b5  [wallet] Refactored error colors using MaterialTheme
     new f636027  [wallet] Navbar and status bar are now set via XML
     new df88d1d  [wallet] Fix icon color in button
     new 3ad4c94  [wallet] Fix color of ic_unarchive icon
     new a190a2d  [wallet] Material3 adjustments after rebase

The 9 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 wallet/build.gradle                                |  3 +-
 wallet/src/main/AndroidManifest.xml                |  1 +
 .../java/net/taler/wallet/ReceiveFundsFragment.kt  | 19 ++---
 .../java/net/taler/wallet/SendFundsFragment.kt     | 22 +++---
 .../src/main/java/net/taler/wallet/WalletApp.kt    | 19 ++---
 .../taler/wallet/compose/QrCodeUriComposable.kt    | 27 ++++---
 .../java/net/taler/wallet/compose/ShareButton.kt   | 14 ++--
 .../main/java/net/taler/wallet/compose/Utils.kt    |  6 +-
 .../wallet/deposit/MakeBitcoinDepositComposable.kt | 16 ++--
 .../taler/wallet/deposit/MakeDepositComposable.kt  | 19 +++--
 .../net/taler/wallet/deposit/PayToUriFragment.kt   | 47 ++++++------
 .../wallet/deposit/TransactionDepositComposable.kt |  8 +-
 .../wallet/exchanges/AddExchangeDialogFragment.kt  |  3 +-
 .../taler/wallet/exchanges/ExchangeFeesFragment.kt |  6 +-
 .../net/taler/wallet/peer/IncomingComposable.kt    | 28 +++----
 .../wallet/peer/OutgoingPullIntroComposable.kt     | 15 ++--
 .../wallet/peer/OutgoingPullResultComposable.kt    | 19 +++--
 .../wallet/peer/OutgoingPushIntroComposable.kt     | 19 ++---
 .../wallet/peer/OutgoingPushResultComposable.kt    | 19 +++--
 .../taler/wallet/peer/TransactionPeerPullCredit.kt |  8 +-
 .../taler/wallet/peer/TransactionPeerPullDebit.kt  |  2 +-
 .../taler/wallet/peer/TransactionPeerPushCredit.kt |  2 +-
 .../taler/wallet/peer/TransactionPeerPushDebit.kt  |  8 +-
 .../net/taler/wallet/settings/SettingsFragment.kt  |  4 +-
 .../transactions/DeleteTransactionComposable.kt    | 17 ++---
 .../transactions/TransactionDetailFragment.kt      |  4 +-
 .../wallet/transactions/TransactionPeerFragment.kt | 12 +--
 .../wallet/transactions/TransactionTipFragment.kt  |  8 +-
 .../wallet/transactions/TransactionsFragment.kt    |  4 +-
 .../taler/wallet/withdraw/manual/ScreenBitcoin.kt  | 28 ++++---
 .../net/taler/wallet/withdraw/manual/ScreenIBAN.kt | 29 ++++----
 wallet/src/main/res/drawable/ic_unarchive.xml      |  4 +-
 wallet/src/main/res/layout/app_content_main.xml    |  4 +-
 wallet/src/main/res/layout/dialog_exchange_add.xml |  2 +-
 wallet/src/main/res/layout/fragment_error.xml      | 10 +--
 .../src/main/res/layout/fragment_exchange_fees.xml |  4 +-
 .../main/res/layout/fragment_manual_withdraw.xml   |  7 +-
 wallet/src/main/res/layout/fragment_prompt_tip.xml |  2 +-
 .../main/res/layout/fragment_prompt_withdraw.xml   |  2 +-
 .../res/layout/fragment_review_exchange_tos.xml    |  2 +-
 .../res/layout/fragment_transaction_payment.xml    |  2 +
 .../res/layout/fragment_transaction_withdrawal.xml | 16 ++--
 .../src/main/res/layout/fragment_transactions.xml  |  4 +-
 wallet/src/main/res/layout/fragment_uri_input.xml  |  2 +-
 .../src/main/res/layout/list_item_transaction.xml  |  3 +-
 wallet/src/main/res/layout/nav_header_main.xml     |  2 +-
 .../list_item_age.xml => values-night/styles.xml}  | 22 +++---
 .../{values/defaults.xml => values-v27/styles.xml} |  9 ++-
 wallet/src/main/res/values/colors.xml              | 63 ++++++++++++++++
 wallet/src/main/res/values/styles.xml              | 85 ++++++++++++++++++----
 50 files changed, 417 insertions(+), 264 deletions(-)
 copy cashier/src/main/java/net/taler/cashier/SignedAmount.kt => 
wallet/src/main/java/net/taler/wallet/WalletApp.kt (70%)
 copy wallet/src/main/res/{layout/list_item_age.xml => values-night/styles.xml} 
(60%)
 copy wallet/src/main/res/{values/defaults.xml => values-v27/styles.xml} (66%)

diff --git a/wallet/build.gradle b/wallet/build.gradle
index 6cd9f2e..737a1de 100644
--- a/wallet/build.gradle
+++ b/wallet/build.gradle
@@ -130,9 +130,10 @@ dependencies {
     implementation "androidx.compose.animation:animation:$compose_version"
     implementation "androidx.compose.ui:ui-tooling:$compose_version"
     implementation "androidx.compose.material:material:1.3.1"
+    implementation "androidx.compose.material3:material3:1.0.1"
     implementation "androidx.compose.material:material-icons-extended:1.3.1"
     implementation 
"androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version"
-    implementation 
"com.google.accompanist:accompanist-themeadapter-material:0.28.0"
+    implementation 
"com.google.accompanist:accompanist-themeadapter-material3:0.28.0"
 
     // Lists and Selection
     implementation "androidx.recyclerview:recyclerview:1.2.1"
diff --git a/wallet/src/main/AndroidManifest.xml 
b/wallet/src/main/AndroidManifest.xml
index 23746cd..01e82a6 100644
--- a/wallet/src/main/AndroidManifest.xml
+++ b/wallet/src/main/AndroidManifest.xml
@@ -34,6 +34,7 @@
         android:required="false" />
 
     <application
+        android:name=".WalletApp"
         android:allowBackup="true"
         android:extractNativeLibs="true"
         android:fullBackupContent="@xml/backup_descriptor"
diff --git a/wallet/src/main/java/net/taler/wallet/ReceiveFundsFragment.kt 
b/wallet/src/main/java/net/taler/wallet/ReceiveFundsFragment.kt
index ac6b0bd..4fbb09b 100644
--- a/wallet/src/main/java/net/taler/wallet/ReceiveFundsFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/ReceiveFundsFragment.kt
@@ -31,11 +31,12 @@ import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.text.KeyboardOptions
 import androidx.compose.foundation.verticalScroll
-import androidx.compose.material.Button
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.OutlinedTextField
-import androidx.compose.material.Surface
-import androidx.compose.material.Text
+import androidx.compose.material3.Button
+import androidx.compose.material3.ExperimentalMaterial3Api
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.OutlinedTextField
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
@@ -43,7 +44,6 @@ import androidx.compose.runtime.saveable.rememberSaveable
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.ComposeView
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.text.input.KeyboardType.Companion.Decimal
@@ -111,6 +111,7 @@ class ReceiveFundsFragment : Fragment() {
     }
 }
 
+@OptIn(ExperimentalMaterial3Api::class)
 @Composable
 private fun ReceiveFundsIntro(
     currency: String,
@@ -146,7 +147,7 @@ private fun ReceiveFundsIntro(
                     if (isError) {
                         Text(
                             stringResource(R.string.receive_amount_invalid),
-                            color = Color.Red,
+                            color = MaterialTheme.colorScheme.error,
                         )
                     } else {
                         Text(stringResource(R.string.receive_amount))
@@ -157,13 +158,13 @@ private fun ReceiveFundsIntro(
                 modifier = Modifier,
                 text = currency,
                 softWrap = false,
-                style = MaterialTheme.typography.h6,
+                style = MaterialTheme.typography.titleLarge,
             )
         }
         Text(
             modifier = Modifier.padding(horizontal = 16.dp),
             text = stringResource(R.string.receive_intro),
-            style = MaterialTheme.typography.h6,
+            style = MaterialTheme.typography.titleLarge,
         )
         Row(modifier = Modifier.padding(16.dp)) {
             Button(
diff --git a/wallet/src/main/java/net/taler/wallet/SendFundsFragment.kt 
b/wallet/src/main/java/net/taler/wallet/SendFundsFragment.kt
index 90b4ee0..7ae7773 100644
--- a/wallet/src/main/java/net/taler/wallet/SendFundsFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/SendFundsFragment.kt
@@ -29,11 +29,12 @@ import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.text.KeyboardOptions
 import androidx.compose.foundation.verticalScroll
-import androidx.compose.material.Button
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.OutlinedTextField
-import androidx.compose.material.Surface
-import androidx.compose.material.Text
+import androidx.compose.material3.Button
+import androidx.compose.material3.ExperimentalMaterial3Api
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.OutlinedTextField
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
@@ -41,7 +42,6 @@ import androidx.compose.runtime.saveable.rememberSaveable
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.ComposeView
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.text.input.KeyboardType
@@ -98,6 +98,7 @@ class SendFundsFragment : Fragment() {
     }
 }
 
+@OptIn(ExperimentalMaterial3Api::class)
 @Composable
 private fun SendFundsIntro(
     currency: String,
@@ -136,12 +137,12 @@ private fun SendFundsIntro(
                     if (isError) {
                         Text(
                             stringResource(R.string.receive_amount_invalid),
-                            color = Color.Red,
+                            color = MaterialTheme.colorScheme.error,
                         )
                     } else if (insufficientBalance) {
                         Text(
                             
stringResource(R.string.payment_balance_insufficient),
-                            color = Color.Red,
+                            color = MaterialTheme.colorScheme.error,
                         )
                     } else {
                         Text(stringResource(R.string.send_amount))
@@ -152,13 +153,13 @@ private fun SendFundsIntro(
                 modifier = Modifier,
                 text = currency,
                 softWrap = false,
-                style = MaterialTheme.typography.h6,
+                style = MaterialTheme.typography.titleLarge,
             )
         }
         Text(
             modifier = Modifier.padding(horizontal = 16.dp),
             text = stringResource(R.string.send_intro),
-            style = MaterialTheme.typography.h6,
+            style = MaterialTheme.typography.titleLarge,
         )
         Row(modifier = Modifier.padding(16.dp)) {
             fun onClickButton(block: (Amount) -> Unit) {
@@ -170,6 +171,7 @@ private fun SendFundsIntro(
             Button(
                 modifier = Modifier
                     .padding(end = 16.dp)
+                    .height(IntrinsicSize.Max)
                     .weight(1f),
                 onClick = {
                     onClickButton { amount -> onDeposit(amount) }
diff --git a/cashier/src/main/java/net/taler/cashier/SignedAmount.kt 
b/wallet/src/main/java/net/taler/wallet/WalletApp.kt
similarity index 70%
copy from cashier/src/main/java/net/taler/cashier/SignedAmount.kt
copy to wallet/src/main/java/net/taler/wallet/WalletApp.kt
index 4f624ae..1076364 100644
--- a/cashier/src/main/java/net/taler/cashier/SignedAmount.kt
+++ b/wallet/src/main/java/net/taler/wallet/WalletApp.kt
@@ -1,6 +1,6 @@
 /*
  * This file is part of GNU Taler
- * (C) 2020 Taler Systems S.A.
+ * (C) 2023 Taler Systems S.A.
  *
  * GNU Taler is free software; you can redistribute it and/or modify it under 
the
  * terms of the GNU General Public License as published by the Free Software
@@ -14,17 +14,14 @@
  * GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
  */
 
-package net.taler.cashier
+package net.taler.wallet
 
-import net.taler.common.Amount
+import android.app.Application
+import com.google.android.material.color.DynamicColors
 
-data class SignedAmount(
-    val positive: Boolean,
-    val amount: Amount
-) {
-
-    override fun toString(): String {
-        return if (positive) "$amount" else "-$amount"
+class WalletApp: Application() {
+    override fun onCreate() {
+        super.onCreate()
+        DynamicColors.applyToActivitiesIfAvailable(this)
     }
-
 }
diff --git 
a/wallet/src/main/java/net/taler/wallet/compose/QrCodeUriComposable.kt 
b/wallet/src/main/java/net/taler/wallet/compose/QrCodeUriComposable.kt
index 5359f1a..2d7ffa1 100644
--- a/wallet/src/main/java/net/taler/wallet/compose/QrCodeUriComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/compose/QrCodeUriComposable.kt
@@ -29,12 +29,12 @@ import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.rememberScrollState
-import androidx.compose.material.Button
-import androidx.compose.material.ButtonColors
-import androidx.compose.material.ButtonDefaults
-import androidx.compose.material.Icon
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.Text
+import androidx.compose.material3.Button
+import androidx.compose.material3.ButtonColors
+import androidx.compose.material3.ButtonDefaults
+import androidx.compose.material3.Icon
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Text
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.filled.ContentCopy
 import androidx.compose.runtime.Composable
@@ -42,7 +42,6 @@ import androidx.compose.runtime.produceState
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Alignment.Companion.CenterHorizontally
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.asImageBitmap
 import androidx.compose.ui.platform.LocalConfiguration
 import androidx.compose.ui.platform.LocalContext
@@ -86,7 +85,7 @@ fun ColumnScope.QrCodeUriComposable(
         Text(
             modifier = Modifier.horizontalScroll(scrollState),
             fontFamily = FontFamily.Monospace,
-            style = MaterialTheme.typography.body1,
+            style = MaterialTheme.typography.bodyLarge,
             text = talerUri,
         )
     }
@@ -100,11 +99,17 @@ fun ColumnScope.QrCodeUriComposable(
             label = clipBoardLabel,
             content = talerUri,
             buttonText = buttonText,
-            colors = ButtonDefaults.buttonColors(backgroundColor = 
Color.Transparent)
+            colors = ButtonDefaults.buttonColors(
+                containerColor = MaterialTheme.colorScheme.primaryContainer,
+                contentColor = MaterialTheme.colorScheme.onPrimaryContainer
+            )
         )
         ShareButton(
             content = talerUri,
-            colors = ButtonDefaults.buttonColors(backgroundColor = 
Color.Transparent)
+            colors = ButtonDefaults.buttonColors(
+                containerColor = MaterialTheme.colorScheme.primaryContainer,
+                contentColor = MaterialTheme.colorScheme.onPrimaryContainer
+            )
         )
     }
 }
@@ -136,7 +141,7 @@ fun CopyToClipboardButton(
             Text(
                 modifier = Modifier.padding(start = 8.dp),
                 text = buttonText,
-                style = MaterialTheme.typography.body1,
+                style = MaterialTheme.typography.bodyLarge,
             )
         }
     }
diff --git a/wallet/src/main/java/net/taler/wallet/compose/ShareButton.kt 
b/wallet/src/main/java/net/taler/wallet/compose/ShareButton.kt
index 0ac7048..ebf2a2f 100644
--- a/wallet/src/main/java/net/taler/wallet/compose/ShareButton.kt
+++ b/wallet/src/main/java/net/taler/wallet/compose/ShareButton.kt
@@ -21,12 +21,12 @@ import android.content.Intent.ACTION_SEND
 import android.content.Intent.EXTRA_TEXT
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.padding
-import androidx.compose.material.Button
-import androidx.compose.material.ButtonColors
-import androidx.compose.material.ButtonDefaults
-import androidx.compose.material.Icon
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.Text
+import androidx.compose.material3.Button
+import androidx.compose.material3.ButtonColors
+import androidx.compose.material3.ButtonDefaults
+import androidx.compose.material3.Icon
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Text
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.filled.Share
 import androidx.compose.runtime.Composable
@@ -64,7 +64,7 @@ fun ShareButton(
             Text(
                 modifier = Modifier.padding(start = 8.dp),
                 text = buttonText,
-                style = MaterialTheme.typography.body1,
+                style = MaterialTheme.typography.bodyLarge,
             )
         }
     }
diff --git a/wallet/src/main/java/net/taler/wallet/compose/Utils.kt 
b/wallet/src/main/java/net/taler/wallet/compose/Utils.kt
index 8e3a032..9a27431 100644
--- a/wallet/src/main/java/net/taler/wallet/compose/Utils.kt
+++ b/wallet/src/main/java/net/taler/wallet/compose/Utils.kt
@@ -16,7 +16,7 @@
 
 package net.taler.wallet.compose
 
-import androidx.compose.material.Surface
+import androidx.compose.material3.Surface
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.State
 import androidx.compose.runtime.collectAsState
@@ -25,7 +25,7 @@ import androidx.compose.ui.platform.LocalLifecycleOwner
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.LifecycleOwner
 import androidx.lifecycle.flowWithLifecycle
-import com.google.accompanist.themeadapter.material.MdcTheme
+import com.google.accompanist.themeadapter.material3.Mdc3Theme
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.StateFlow
 import kotlin.coroutines.CoroutineContext
@@ -56,7 +56,7 @@ fun <T> StateFlow<T>.collectAsStateLifecycleAware(
 
 @Composable
 fun TalerSurface(content: @Composable () -> Unit) {
-    MdcTheme {
+    Mdc3Theme {
         Surface {
             content()
         }
diff --git 
a/wallet/src/main/java/net/taler/wallet/deposit/MakeBitcoinDepositComposable.kt 
b/wallet/src/main/java/net/taler/wallet/deposit/MakeBitcoinDepositComposable.kt
index 1ff3423..e022ed3 100644
--- 
a/wallet/src/main/java/net/taler/wallet/deposit/MakeBitcoinDepositComposable.kt
+++ 
b/wallet/src/main/java/net/taler/wallet/deposit/MakeBitcoinDepositComposable.kt
@@ -22,10 +22,12 @@ import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
-import androidx.compose.material.Button
-import androidx.compose.material.OutlinedTextField
-import androidx.compose.material.Surface
-import androidx.compose.material.Text
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Button
+import androidx.compose.material3.ExperimentalMaterial3Api
+import androidx.compose.material3.OutlinedTextField
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
@@ -39,7 +41,6 @@ import androidx.compose.ui.focus.FocusRequester
 import androidx.compose.ui.focus.focusRequester
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.LocalFocusManager
-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
@@ -50,6 +51,7 @@ import net.taler.wallet.R
 import net.taler.wallet.transactions.AmountType
 import net.taler.wallet.transactions.TransactionAmountComposable
 
+@OptIn(ExperimentalMaterial3Api::class)
 @Composable
 fun MakeBitcoinDepositComposable(
     state: DepositState,
@@ -80,7 +82,7 @@ fun MakeBitcoinDepositComposable(
                 Text(
                     stringResource(R.string.send_deposit_bitcoin_address),
                     color = if (address.isBlank()) {
-                        colorResource(R.color.red)
+                        MaterialTheme.colorScheme.error
                     } else Color.Unspecified,
                 )
             }
@@ -120,7 +122,7 @@ fun MakeBitcoinDepositComposable(
             Text(
                 modifier = Modifier.padding(16.dp),
                 fontSize = 18.sp,
-                color = colorResource(R.color.red),
+                color = MaterialTheme.colorScheme.error,
                 text = (state as? DepositState.Error)?.msg ?: "",
             )
         }
diff --git 
a/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt 
b/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt
index 8b5cac1..47c2322 100644
--- a/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt
@@ -22,10 +22,12 @@ import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
-import androidx.compose.material.Button
-import androidx.compose.material.OutlinedTextField
-import androidx.compose.material.Surface
-import androidx.compose.material.Text
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Button
+import androidx.compose.material3.ExperimentalMaterial3Api
+import androidx.compose.material3.OutlinedTextField
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
@@ -47,6 +49,7 @@ import androidx.compose.ui.unit.sp
 import net.taler.common.Amount
 import net.taler.wallet.R
 
+@OptIn(ExperimentalMaterial3Api::class)
 @Composable
 fun MakeDepositComposable(
     state: DepositState,
@@ -80,7 +83,7 @@ fun MakeDepositComposable(
                 Text(
                     stringResource(R.string.send_deposit_name),
                     color = if (name.isBlank()) {
-                        colorResource(R.color.red)
+                        MaterialTheme.colorScheme.error
                     } else Color.Unspecified,
                 )
             }
@@ -101,7 +104,7 @@ fun MakeDepositComposable(
                 Text(
                     text = stringResource(R.string.send_deposit_iban),
                     color = if (iban.isBlank()) {
-                        colorResource(R.color.red)
+                        MaterialTheme.colorScheme.error
                     } else Color.Unspecified,
                 )
             }
@@ -151,7 +154,7 @@ fun MakeDepositComposable(
                 Text(
                     modifier = Modifier.padding(16.dp),
                     fontSize = 24.sp,
-                    color = colorResource(if (fee.isZero()) R.color.green else 
R.color.red),
+                    color = if (fee.isZero()) colorResource(R.color.green) 
else MaterialTheme.colorScheme.error,
                     text = if (fee.isZero()) {
                         fee.toString()
                     } else {
@@ -174,7 +177,7 @@ fun MakeDepositComposable(
             Text(
                 modifier = Modifier.padding(16.dp),
                 fontSize = 18.sp,
-                color = colorResource(R.color.red),
+                color = MaterialTheme.colorScheme.error,
                 text = (state as? DepositState.Error)?.msg ?: "",
             )
         }
diff --git a/wallet/src/main/java/net/taler/wallet/deposit/PayToUriFragment.kt 
b/wallet/src/main/java/net/taler/wallet/deposit/PayToUriFragment.kt
index 47e8cfb..c8b5b6e 100644
--- a/wallet/src/main/java/net/taler/wallet/deposit/PayToUriFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/deposit/PayToUriFragment.kt
@@ -32,14 +32,15 @@ import androidx.compose.foundation.layout.wrapContentSize
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.text.KeyboardOptions
 import androidx.compose.foundation.verticalScroll
-import androidx.compose.material.Button
-import androidx.compose.material.DropdownMenu
-import androidx.compose.material.DropdownMenuItem
-import androidx.compose.material.LocalTextStyle
-import androidx.compose.material.OutlinedTextField
-import androidx.compose.material.Surface
-import androidx.compose.material.Text
-import androidx.compose.material.TextFieldDefaults
+import androidx.compose.material3.Button
+import androidx.compose.material3.DropdownMenu
+import androidx.compose.material3.DropdownMenuItem
+import androidx.compose.material3.ExperimentalMaterial3Api
+import androidx.compose.material3.LocalTextStyle
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.OutlinedTextField
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
@@ -53,7 +54,6 @@ import androidx.compose.ui.focus.FocusRequester
 import androidx.compose.ui.focus.focusRequester
 import androidx.compose.ui.platform.ComposeView
 import androidx.compose.ui.platform.LocalFocusManager
-import androidx.compose.ui.res.colorResource
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.text.input.KeyboardType
 import androidx.compose.ui.tooling.preview.Preview
@@ -85,7 +85,7 @@ class PayToUriFragment : Fragment() {
                 TalerSurface {
                     if (currencies.isEmpty()) Text(
                         text = stringResource(id = 
R.string.payment_balance_insufficient),
-                        color = colorResource(id = R.color.red),
+                        color = MaterialTheme.colorScheme.error,
                     ) else if (depositManager.isSupportedPayToUri(uri)) 
PayToComposable(
                         currencies = model.getCurrencies(),
                         getAmount = model::createAmount,
@@ -101,7 +101,7 @@ class PayToUriFragment : Fragment() {
                         },
                     ) else Text(
                         text = stringResource(id = R.string.uri_invalid),
-                        color = colorResource(id = R.color.red),
+                        color = MaterialTheme.colorScheme.error,
                     )
                 }
             }
@@ -115,6 +115,7 @@ class PayToUriFragment : Fragment() {
 
 }
 
+@OptIn(ExperimentalMaterial3Api::class)
 @Composable
 private fun PayToComposable(
     currencies: List<String>,
@@ -149,7 +150,7 @@ private fun PayToComposable(
                 if (amountError.isBlank()) {
                     Text(stringResource(R.string.send_amount))
                 } else {
-                    Text(amountError, color = colorResource(R.color.red))
+                    Text(amountError, color = MaterialTheme.colorScheme.error)
                 }
             }
         )
@@ -183,6 +184,7 @@ private fun PayToComposable(
     }
 }
 
+@OptIn(ExperimentalMaterial3Api::class)
 @Composable
 fun CurrencyDropdown(
     currencies: List<String>,
@@ -203,9 +205,7 @@ fun CurrencyDropdown(
             readOnly = true,
             enabled = false,
             textStyle = LocalTextStyle.current.copy( // show text as if not 
disabled
-                color = TextFieldDefaults.outlinedTextFieldColors().textColor(
-                    enabled = true,
-                ).value
+                color = MaterialTheme.colorScheme.onSurfaceVariant
             ),
             singleLine = true,
             label = {
@@ -218,13 +218,16 @@ fun CurrencyDropdown(
             modifier = Modifier,
         ) {
             currencies.forEachIndexed { index, s ->
-                DropdownMenuItem(onClick = {
-                    selectedIndex = index
-                    onCurrencyChanged(currencies[index])
-                    expanded = false
-                }) {
-                    Text(text = s)
-                }
+                DropdownMenuItem(
+                    text = {
+                        Text(text = s)
+                    },
+                    onClick = {
+                        selectedIndex = index
+                        onCurrencyChanged(currencies[index])
+                        expanded = false
+                    }
+                )
             }
         }
     }
diff --git 
a/wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt 
b/wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt
index 7c5c7a2..f6f411a 100644
--- 
a/wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt
+++ 
b/wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt
@@ -21,9 +21,9 @@ import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.Surface
-import androidx.compose.material.Text
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
@@ -53,7 +53,7 @@ fun TransactionDepositComposable(t: TransactionDeposit, 
onDelete: () -> Unit) {
         Text(
             modifier = Modifier.padding(16.dp),
             text = t.timestamp.ms.toAbsoluteTime(context).toString(),
-            style = MaterialTheme.typography.body1,
+            style = MaterialTheme.typography.bodyLarge,
         )
         TransactionAmountComposable(
             label = stringResource(id = R.string.transaction_paid),
diff --git 
a/wallet/src/main/java/net/taler/wallet/exchanges/AddExchangeDialogFragment.kt 
b/wallet/src/main/java/net/taler/wallet/exchanges/AddExchangeDialogFragment.kt
index 5ea763a..fd942b0 100644
--- 
a/wallet/src/main/java/net/taler/wallet/exchanges/AddExchangeDialogFragment.kt
+++ 
b/wallet/src/main/java/net/taler/wallet/exchanges/AddExchangeDialogFragment.kt
@@ -22,6 +22,7 @@ import android.widget.TextView
 import androidx.appcompat.app.AlertDialog
 import androidx.fragment.app.DialogFragment
 import androidx.fragment.app.activityViewModels
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
 import net.taler.wallet.MainViewModel
 import net.taler.wallet.R
 
@@ -32,7 +33,7 @@ class AddExchangeDialogFragment : DialogFragment() {
     private val exchangeManager by lazy { model.exchangeManager }
 
     override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
-        return AlertDialog.Builder(requireContext(), R.style.DialogTheme)
+        return MaterialAlertDialogBuilder(requireContext(), 
R.style.MaterialAlertDialog_Material3)
             .setIcon(R.drawable.ic_account_balance)
             .setTitle(R.string.exchange_list_add)
             .setView(R.layout.dialog_exchange_add)
diff --git 
a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeFeesFragment.kt 
b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeFeesFragment.kt
index d8242f3..5ba204c 100644
--- a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeFeesFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeFeesFragment.kt
@@ -17,12 +17,12 @@
 package net.taler.wallet.exchanges
 
 import android.os.Bundle
+import android.util.TypedValue
 import android.view.LayoutInflater
 import android.view.View
 import android.view.View.GONE
 import android.view.ViewGroup
 import android.widget.TextView
-import androidx.core.content.ContextCompat.getColor
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.activityViewModels
 import androidx.recyclerview.widget.RecyclerView.Adapter
@@ -71,7 +71,9 @@ class ExchangeFeesFragment : Fragment() {
         if (amount.isZero()) text = amount.toString()
         else {
             text = getString(R.string.amount_negative, amount)
-            setTextColor(getColor(context, R.color.red))
+            val value = TypedValue()
+            requireContext().theme.resolveAttribute(R.attr.colorError, value, 
true)
+            setTextColor(value.data)
         }
     }
 
diff --git a/wallet/src/main/java/net/taler/wallet/peer/IncomingComposable.kt 
b/wallet/src/main/java/net/taler/wallet/peer/IncomingComposable.kt
index 70f36a2..98f1edd 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/IncomingComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/IncomingComposable.kt
@@ -27,13 +27,13 @@ import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
-import androidx.compose.material.Button
-import androidx.compose.material.ButtonDefaults
-import androidx.compose.material.Card
-import androidx.compose.material.CircularProgressIndicator
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.Surface
-import androidx.compose.material.Text
+import androidx.compose.material3.Button
+import androidx.compose.material3.ButtonDefaults
+import androidx.compose.material3.Card
+import androidx.compose.material3.CircularProgressIndicator
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.State
 import androidx.compose.runtime.mutableStateOf
@@ -116,7 +116,7 @@ fun ColumnScope.PeerPullTermsComposable(
             .padding(16.dp)
             .align(CenterHorizontally),
         text = terms.contractTerms.summary,
-        style = MaterialTheme.typography.h5,
+        style = MaterialTheme.typography.headlineSmall,
     )
     Spacer(modifier = Modifier.weight(1f))
     Card(modifier = Modifier.fillMaxWidth()) {
@@ -128,12 +128,12 @@ fun ColumnScope.PeerPullTermsComposable(
             ) {
                 Text(
                     text = stringResource(id = 
R.string.payment_label_amount_total),
-                    style = MaterialTheme.typography.body1,
+                    style = MaterialTheme.typography.bodyLarge,
                 )
                 Text(
                     modifier = Modifier.padding(start = 8.dp),
                     text = terms.contractTerms.amount.toString(),
-                    style = MaterialTheme.typography.body1,
+                    style = MaterialTheme.typography.bodyLarge,
                     fontWeight = FontWeight.Bold,
                 )
             }
@@ -143,7 +143,7 @@ fun ColumnScope.PeerPullTermsComposable(
                 Text(
                     modifier = Modifier.align(End),
                     text = stringResource(id = R.string.payment_fee, fee),
-                    style = MaterialTheme.typography.body1,
+                    style = MaterialTheme.typography.bodyLarge,
                 )
             }
             if (terms is IncomingAccepting) {
@@ -158,7 +158,7 @@ fun ColumnScope.PeerPullTermsComposable(
                         .align(End)
                         .padding(top = 8.dp),
                     colors = ButtonDefaults.buttonColors(
-                        backgroundColor = colorResource(R.color.green),
+                        containerColor = colorResource(R.color.green),
                         contentColor = Color.White,
                     ),
                     onClick = { onAccept(terms) },
@@ -179,8 +179,8 @@ fun ColumnScope.PeerPullErrorComposable(s: IncomingError) {
             .align(CenterHorizontally)
             .padding(horizontal = 32.dp),
         text = s.info.userFacingMsg,
-        style = MaterialTheme.typography.h5,
-        color = colorResource(id = R.color.red),
+        style = MaterialTheme.typography.headlineSmall,
+        color = MaterialTheme.colorScheme.error,
     )
 }
 
diff --git 
a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullIntroComposable.kt 
b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullIntroComposable.kt
index 9af3f5d..7fd01f5 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullIntroComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullIntroComposable.kt
@@ -22,10 +22,12 @@ import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
-import androidx.compose.material.Button
-import androidx.compose.material.OutlinedTextField
-import androidx.compose.material.Surface
-import androidx.compose.material.Text
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Button
+import androidx.compose.material3.ExperimentalMaterial3Api
+import androidx.compose.material3.OutlinedTextField
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.State
@@ -50,6 +52,7 @@ import net.taler.wallet.R
 import net.taler.wallet.cleanExchange
 import net.taler.wallet.exchanges.ExchangeItem
 
+@OptIn(ExperimentalMaterial3Api::class)
 @Composable
 fun OutgoingPullIntroComposable(
     amount: Amount,
@@ -82,7 +85,7 @@ fun OutgoingPullIntroComposable(
                 Text(
                     stringResource(R.string.send_peer_purpose),
                     color = if (subject.isBlank()) {
-                        colorResource(R.color.red)
+                        MaterialTheme.colorScheme.error
                     } else Color.Unspecified,
                 )
             }
@@ -94,7 +97,7 @@ fun OutgoingPullIntroComposable(
             modifier = Modifier
                 .fillMaxWidth()
                 .padding(top = 5.dp, end = 16.dp),
-            color = if (subject.isBlank()) colorResource(R.color.red) else 
Color.Unspecified,
+            color = if (subject.isBlank()) MaterialTheme.colorScheme.error 
else Color.Unspecified,
             text = stringResource(R.string.char_count, subject.length, 
MAX_LENGTH_SUBJECT),
             textAlign = TextAlign.End,
         )
diff --git 
a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullResultComposable.kt 
b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullResultComposable.kt
index 84d9415..a68ae16 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullResultComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullResultComposable.kt
@@ -24,15 +24,14 @@ import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
-import androidx.compose.material.Button
-import androidx.compose.material.CircularProgressIndicator
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.Surface
-import androidx.compose.material.Text
+import androidx.compose.material3.Button
+import androidx.compose.material3.CircularProgressIndicator
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment.Companion.CenterHorizontally
 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
@@ -55,7 +54,7 @@ fun OutgoingPullResultComposable(state: OutgoingState, 
onClose: () -> Unit) {
     ) {
         Text(
             modifier = Modifier.padding(top = 16.dp, start = 16.dp, end = 
16.dp),
-            style = MaterialTheme.typography.h6,
+            style = MaterialTheme.typography.titleLarge,
             text = stringResource(id = 
R.string.receive_peer_invoice_instruction),
         )
         when (state) {
@@ -92,7 +91,7 @@ private fun ColumnScope.PeerPullResponseComposable(state: 
OutgoingResponse) {
     ) {
         Text(
             modifier = Modifier.padding(horizontal = 16.dp),
-            style = MaterialTheme.typography.body1,
+            style = MaterialTheme.typography.bodyLarge,
             text = stringResource(id = R.string.receive_peer_invoice_uri),
         )
     }
@@ -104,8 +103,8 @@ private fun ColumnScope.PeerPullErrorComposable(state: 
OutgoingError) {
         modifier = Modifier
             .align(CenterHorizontally)
             .padding(16.dp),
-        color = colorResource(R.color.red),
-        style = MaterialTheme.typography.body1,
+        color = MaterialTheme.colorScheme.error,
+        style = MaterialTheme.typography.bodyLarge,
         text = state.info.userFacingMsg,
     )
 }
diff --git 
a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushIntroComposable.kt 
b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushIntroComposable.kt
index a77cfb7..0f30081 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushIntroComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushIntroComposable.kt
@@ -22,11 +22,12 @@ import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
-import androidx.compose.material.Button
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.OutlinedTextField
-import androidx.compose.material.Surface
-import androidx.compose.material.Text
+import androidx.compose.material3.Button
+import androidx.compose.material3.ExperimentalMaterial3Api
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.OutlinedTextField
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
@@ -36,7 +37,6 @@ import androidx.compose.ui.Alignment
 import androidx.compose.ui.Alignment.Companion.CenterHorizontally
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
-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
@@ -44,6 +44,7 @@ import androidx.compose.ui.unit.dp
 import net.taler.common.Amount
 import net.taler.wallet.R
 
+@OptIn(ExperimentalMaterial3Api::class)
 @Composable
 fun OutgoingPushIntroComposable(
     amount: Amount,
@@ -65,7 +66,7 @@ fun OutgoingPushIntroComposable(
                 modifier = Modifier,
                 text = amount.toString(),
                 softWrap = false,
-                style = MaterialTheme.typography.h6,
+                style = MaterialTheme.typography.titleLarge,
             )
         }
 
@@ -85,7 +86,7 @@ fun OutgoingPushIntroComposable(
                 Text(
                     stringResource(R.string.send_peer_purpose),
                     color = if (subject.isBlank()) {
-                        colorResource(R.color.red)
+                        MaterialTheme.colorScheme.error
                     } else Color.Unspecified,
                 )
             }
@@ -94,7 +95,7 @@ fun OutgoingPushIntroComposable(
             modifier = Modifier
                 .fillMaxWidth()
                 .padding(top = 5.dp, end = 16.dp),
-            color = if (subject.isBlank()) colorResource(R.color.red) else 
Color.Unspecified,
+            color = if (subject.isBlank()) MaterialTheme.colorScheme.error 
else Color.Unspecified,
             text = stringResource(R.string.char_count, subject.length, 
MAX_LENGTH_SUBJECT),
             textAlign = TextAlign.End,
         )
diff --git 
a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushResultComposable.kt 
b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushResultComposable.kt
index 27b04c8..d81ec64 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushResultComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushResultComposable.kt
@@ -24,15 +24,14 @@ import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
-import androidx.compose.material.Button
-import androidx.compose.material.CircularProgressIndicator
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.Surface
-import androidx.compose.material.Text
+import androidx.compose.material3.Button
+import androidx.compose.material3.CircularProgressIndicator
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment.Companion.CenterHorizontally
 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
@@ -55,7 +54,7 @@ fun OutgoingPushResultComposable(state: OutgoingState, 
onClose: () -> Unit) {
     ) {
         Text(
             modifier = Modifier.padding(top = 16.dp, start = 16.dp, end = 
16.dp),
-            style = MaterialTheme.typography.h6,
+            style = MaterialTheme.typography.titleLarge,
             text = stringResource(id = R.string.send_peer_payment_instruction),
         )
         when (state) {
@@ -92,7 +91,7 @@ private fun ColumnScope.PeerPushResponseComposable(state: 
OutgoingResponse) {
     ) {
         Text(
             modifier = Modifier.padding(horizontal = 16.dp),
-            style = MaterialTheme.typography.body1,
+            style = MaterialTheme.typography.bodyLarge,
             text = stringResource(id = R.string.receive_peer_invoice_uri),
         )
     }
@@ -104,8 +103,8 @@ private fun ColumnScope.PeerPushErrorComposable(state: 
OutgoingError) {
         modifier = Modifier
             .align(CenterHorizontally)
             .padding(16.dp),
-        color = colorResource(R.color.red),
-        style = MaterialTheme.typography.body1,
+        color = MaterialTheme.colorScheme.error,
+        style = MaterialTheme.typography.bodyLarge,
         text = state.info.userFacingMsg,
     )
 }
diff --git 
a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt 
b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt
index 92264c7..c64f0d3 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt
@@ -18,9 +18,9 @@ package net.taler.wallet.peer
 
 import androidx.compose.foundation.layout.ColumnScope
 import androidx.compose.foundation.layout.padding
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.Surface
-import androidx.compose.material.Text
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.res.stringResource
@@ -69,7 +69,7 @@ fun ColumnScope.TransactionPeerPullCreditComposable(t: 
TransactionPeerPullCredit
         ) {
             Text(
                 modifier = Modifier.padding(horizontal = 16.dp),
-                style = MaterialTheme.typography.body1,
+                style = MaterialTheme.typography.bodyLarge,
                 text = stringResource(id = R.string.receive_peer_invoice_uri),
             )
         }
diff --git 
a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullDebit.kt 
b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullDebit.kt
index d09a659..ccf0324 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullDebit.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullDebit.kt
@@ -16,7 +16,7 @@
 
 package net.taler.wallet.peer
 
-import androidx.compose.material.Surface
+import androidx.compose.material3.Surface
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.tooling.preview.Preview
diff --git 
a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushCredit.kt 
b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushCredit.kt
index e918c42..897d3fb 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushCredit.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushCredit.kt
@@ -16,7 +16,7 @@
 
 package net.taler.wallet.peer
 
-import androidx.compose.material.Surface
+import androidx.compose.material3.Surface
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.tooling.preview.Preview
diff --git 
a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt 
b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt
index 88c27fe..3e74d43 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt
@@ -18,9 +18,9 @@ package net.taler.wallet.peer
 
 import androidx.compose.foundation.layout.ColumnScope
 import androidx.compose.foundation.layout.padding
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.Surface
-import androidx.compose.material.Text
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.res.stringResource
@@ -68,7 +68,7 @@ fun ColumnScope.TransactionPeerPushDebitComposable(t: 
TransactionPeerPushDebit)
     ) {
         Text(
             modifier = Modifier.padding(horizontal = 16.dp),
-            style = MaterialTheme.typography.body1,
+            style = MaterialTheme.typography.bodyLarge,
             text = stringResource(id = R.string.receive_peer_invoice_uri),
         )
     }
diff --git a/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt 
b/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt
index 3d31dc5..8bb0a4a 100644
--- a/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt
@@ -19,11 +19,11 @@ package net.taler.wallet.settings
 import android.os.Bundle
 import android.view.View
 import androidx.activity.result.contract.ActivityResultContracts.CreateDocument
-import androidx.appcompat.app.AlertDialog
 import androidx.fragment.app.activityViewModels
 import androidx.preference.Preference
 import androidx.preference.PreferenceFragmentCompat
 import androidx.preference.SwitchPreferenceCompat
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
 import com.google.android.material.snackbar.BaseTransientBottomBar.LENGTH_SHORT
 import com.google.android.material.snackbar.Snackbar
 import net.taler.common.showError
@@ -143,7 +143,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
     }
 
     private fun showResetDialog() {
-        AlertDialog.Builder(requireContext(), R.style.DialogTheme)
+        MaterialAlertDialogBuilder(requireContext(), 
R.style.MaterialAlertDialog_Material3)
             .setMessage("Do you really want to reset the wallet and lose all 
coins and purchases?")
             .setPositiveButton("Reset") { _, _ ->
                 model.dangerouslyReset()
diff --git 
a/wallet/src/main/java/net/taler/wallet/transactions/DeleteTransactionComposable.kt
 
b/wallet/src/main/java/net/taler/wallet/transactions/DeleteTransactionComposable.kt
index 7b69e2b..75ec599 100644
--- 
a/wallet/src/main/java/net/taler/wallet/transactions/DeleteTransactionComposable.kt
+++ 
b/wallet/src/main/java/net/taler/wallet/transactions/DeleteTransactionComposable.kt
@@ -18,15 +18,14 @@ package net.taler.wallet.transactions
 
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.padding
-import androidx.compose.material.Button
-import androidx.compose.material.ButtonDefaults
-import androidx.compose.material.Icon
-import androidx.compose.material.Text
+import androidx.compose.material3.Button
+import androidx.compose.material3.ButtonDefaults
+import androidx.compose.material3.Icon
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.res.colorResource
 import androidx.compose.ui.res.painterResource
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.unit.dp
@@ -36,19 +35,19 @@ import net.taler.wallet.R
 fun DeleteTransactionComposable(onDelete: () -> Unit) {
     Button(
         modifier = Modifier.padding(16.dp),
-        colors = ButtonDefaults.buttonColors(backgroundColor = 
colorResource(R.color.red)),
+        colors = ButtonDefaults.buttonColors(containerColor = 
MaterialTheme.colorScheme.error),
         onClick = onDelete,
     ) {
         Row(verticalAlignment = Alignment.CenterVertically) {
             Icon(
                 painter = painterResource(id = R.drawable.ic_delete),
                 contentDescription = null,
-                tint = Color.White,
+                tint = MaterialTheme.colorScheme.onError,
             )
             Text(
                 modifier = Modifier.padding(start = 8.dp),
                 text = stringResource(R.string.transactions_delete),
-                color = Color.White,
+                color = MaterialTheme.colorScheme.onError,
             )
         }
     }
diff --git 
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt
 
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt
index ed42066..bfafb80 100644
--- 
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt
+++ 
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt
@@ -24,10 +24,10 @@ import android.view.MenuInflater
 import android.view.MenuItem
 import android.widget.TextView
 import androidx.annotation.StringRes
-import androidx.appcompat.app.AlertDialog
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.activityViewModels
 import androidx.navigation.fragment.findNavController
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
 import net.taler.common.Amount
 import net.taler.common.startActivitySafe
 import net.taler.wallet.MainViewModel
@@ -99,7 +99,7 @@ abstract class TransactionDetailFragment : Fragment() {
     protected open val deleteDialogButton = R.string.transactions_delete
 
     protected fun onDeleteButtonClicked(t: Transaction) {
-        AlertDialog.Builder(requireContext(), R.style.DialogTheme)
+        MaterialAlertDialogBuilder(requireContext(), 
R.style.MaterialAlertDialog_Material3)
             .setTitle(deleteDialogTitle)
             .setMessage(deleteDialogMessage)
             .setNeutralButton(R.string.cancel) { dialog, _ ->
diff --git 
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt 
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt
index b7c347f..f6be5c8 100644
--- 
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt
+++ 
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt
@@ -25,8 +25,8 @@ import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.Text
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment.Companion.CenterHorizontally
 import androidx.compose.ui.Modifier
@@ -76,7 +76,7 @@ fun TransactionPeerComposable(t: Transaction, onDelete: () -> 
Unit) {
         Text(
             modifier = Modifier.padding(16.dp),
             text = t.timestamp.ms.toAbsoluteTime(context).toString(),
-            style = MaterialTheme.typography.body1,
+            style = MaterialTheme.typography.bodyLarge,
         )
         when (t) {
             is TransactionPeerPullCredit -> 
TransactionPeerPullCreditComposable(t)
@@ -94,7 +94,7 @@ fun TransactionAmountComposable(label: String, amount: 
Amount, amountType: Amoun
     Text(
         modifier = Modifier.padding(top = 16.dp, start = 16.dp, end = 16.dp),
         text = label,
-        style = MaterialTheme.typography.body2,
+        style = MaterialTheme.typography.bodyMedium,
     )
     Text(
         modifier = Modifier.padding(top = 8.dp, start = 16.dp, end = 16.dp, 
bottom = 16.dp),
@@ -102,7 +102,7 @@ fun TransactionAmountComposable(label: String, amount: 
Amount, amountType: Amoun
         fontSize = 24.sp,
         color = when (amountType) {
             AmountType.Positive -> colorResource(R.color.green)
-            AmountType.Negative -> colorResource(R.color.red)
+            AmountType.Negative -> MaterialTheme.colorScheme.error
             AmountType.Neutral -> Color.Unspecified
         },
     )
@@ -113,7 +113,7 @@ fun TransactionInfoComposable(label: String, info: String) {
     Text(
         modifier = Modifier.padding(top = 16.dp, start = 16.dp, end = 16.dp),
         text = label,
-        style = MaterialTheme.typography.body2,
+        style = MaterialTheme.typography.bodyMedium,
     )
     Text(
         modifier = Modifier.padding(top = 8.dp, start = 16.dp, end = 16.dp, 
bottom = 16.dp),
diff --git 
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt 
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt
index 3f370c7..e8824ed 100644
--- 
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt
+++ 
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt
@@ -25,9 +25,9 @@ import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.Surface
-import androidx.compose.material.Text
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment.Companion.CenterHorizontally
 import androidx.compose.ui.Modifier
@@ -73,7 +73,7 @@ fun TransactionTipComposable(t: TransactionTip, onDelete: () 
-> Unit) {
         Text(
             modifier = Modifier.padding(16.dp),
             text = t.timestamp.ms.toAbsoluteTime(context).toString(),
-            style = MaterialTheme.typography.body1,
+            style = MaterialTheme.typography.bodyLarge,
         )
 
         TransactionAmountComposable(
diff --git 
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt 
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt
index 09adb3e..08281c4 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt
@@ -25,7 +25,6 @@ import android.view.MenuItem
 import android.view.View
 import android.view.View.INVISIBLE
 import android.view.ViewGroup
-import androidx.appcompat.app.AlertDialog
 import androidx.appcompat.widget.SearchView
 import androidx.appcompat.widget.SearchView.OnQueryTextListener
 import androidx.fragment.app.Fragment
@@ -36,6 +35,7 @@ import androidx.recyclerview.selection.SelectionTracker
 import androidx.recyclerview.selection.StorageStrategy
 import androidx.recyclerview.widget.DividerItemDecoration
 import androidx.recyclerview.widget.LinearLayoutManager.VERTICAL
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
 import net.taler.common.Amount
 import net.taler.common.fadeIn
 import net.taler.common.fadeOut
@@ -232,7 +232,7 @@ class TransactionsFragment : Fragment(), 
OnTransactionClickListener, ActionMode.
         when (item.itemId) {
             R.id.transaction_delete -> {
                 tracker?.selection?.toList()?.let { transactionIds ->
-                    AlertDialog.Builder(requireContext(), R.style.DialogTheme)
+                    MaterialAlertDialogBuilder(requireContext(), 
R.style.MaterialAlertDialog_Material3)
                         .setTitle(R.string.transactions_delete)
                         
.setMessage(R.string.transactions_delete_selected_dialog_message)
                         .setNeutralButton(R.string.cancel) { dialog, _ ->
diff --git 
a/wallet/src/main/java/net/taler/wallet/withdraw/manual/ScreenBitcoin.kt 
b/wallet/src/main/java/net/taler/wallet/withdraw/manual/ScreenBitcoin.kt
index d6ed7df..fa20072 100644
--- a/wallet/src/main/java/net/taler/wallet/withdraw/manual/ScreenBitcoin.kt
+++ b/wallet/src/main/java/net/taler/wallet/withdraw/manual/ScreenBitcoin.kt
@@ -23,17 +23,15 @@ import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.wrapContentWidth
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
-import androidx.compose.material.Button
-import androidx.compose.material.ButtonDefaults
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.Surface
-import androidx.compose.material.Text
+import androidx.compose.material3.Button
+import androidx.compose.material3.ButtonDefaults
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Alignment.Companion.End
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.res.colorResource
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.text.font.FontWeight
 import androidx.compose.ui.tooling.preview.Preview
@@ -59,11 +57,11 @@ fun ScreenBitcoin(
     ) {
         Text(
             text = stringResource(R.string.withdraw_manual_bitcoin_title),
-            style = MaterialTheme.typography.h5,
+            style = MaterialTheme.typography.headlineSmall,
         )
         Text(
             text = stringResource(R.string.withdraw_manual_bitcoin_intro),
-            style = MaterialTheme.typography.body1,
+            style = MaterialTheme.typography.bodyLarge,
             modifier = Modifier
                 .padding(vertical = 8.dp)
         )
@@ -85,14 +83,14 @@ fun ScreenBitcoin(
         if (onCancelClick != null) {
             Button(
                 onClick = onCancelClick,
-                colors = ButtonDefaults.buttonColors(backgroundColor = 
colorResource(R.color.red)),
+                colors = ButtonDefaults.buttonColors(containerColor = 
MaterialTheme.colorScheme.error),
                 modifier = Modifier
                     .padding(vertical = 16.dp)
                     .align(End),
             ) {
                 Text(
                     text = 
stringResource(R.string.withdraw_manual_ready_cancel),
-                    color = Color.White,
+                    color = MaterialTheme.colorScheme.onError,
                 )
             }
         }
@@ -111,13 +109,13 @@ fun BitcoinSegwitAddrs(amount: Amount, addr: String, 
segwitAddresses: List<Strin
             Column(modifier = Modifier.weight(0.3f)) {
                 Text(
                     text = addr,
-                    style = MaterialTheme.typography.body1,
+                    style = MaterialTheme.typography.bodyLarge,
                     fontWeight = FontWeight.Normal,
                     fontSize = 3.em
                 )
                 Text(
                     text = amount.withCurrency("BTC").toString(),
-                    style = MaterialTheme.typography.body1,
+                    style = MaterialTheme.typography.bodyLarge,
                     fontWeight = FontWeight.Bold,
                 )
             }
@@ -127,13 +125,13 @@ fun BitcoinSegwitAddrs(amount: Amount, addr: String, 
segwitAddresses: List<Strin
                 Column(modifier = Modifier.weight(0.3f)) {
                     Text(
                         text = segwitAddress,
-                        style = MaterialTheme.typography.body1,
+                        style = MaterialTheme.typography.bodyLarge,
                         fontWeight = FontWeight.Normal,
                         fontSize = 3.em,
                     )
                     Text(
                         text = SEGWIT_MIN.toString(),
-                        style = MaterialTheme.typography.body1,
+                        style = MaterialTheme.typography.bodyLarge,
                         fontWeight = FontWeight.Bold,
                     )
                 }
diff --git 
a/wallet/src/main/java/net/taler/wallet/withdraw/manual/ScreenIBAN.kt 
b/wallet/src/main/java/net/taler/wallet/withdraw/manual/ScreenIBAN.kt
index 79ca364..537f3ad 100644
--- a/wallet/src/main/java/net/taler/wallet/withdraw/manual/ScreenIBAN.kt
+++ b/wallet/src/main/java/net/taler/wallet/withdraw/manual/ScreenIBAN.kt
@@ -26,20 +26,19 @@ import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.wrapContentWidth
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
-import androidx.compose.material.Button
-import androidx.compose.material.ButtonDefaults
-import androidx.compose.material.Icon
-import androidx.compose.material.IconButton
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.Surface
-import androidx.compose.material.Text
+import androidx.compose.material3.Button
+import androidx.compose.material3.ButtonDefaults
+import androidx.compose.material3.Icon
+import androidx.compose.material3.IconButton
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.filled.ContentCopy
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.draw.alpha
-import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.res.colorResource
 import androidx.compose.ui.res.stringResource
@@ -65,12 +64,12 @@ fun ScreenIBAN(
     ) {
         Text(
             text = stringResource(R.string.withdraw_manual_ready_title),
-            style = MaterialTheme.typography.h5,
+            style = MaterialTheme.typography.headlineSmall,
         )
         Text(
             text = stringResource(R.string.withdraw_manual_ready_intro,
                 status.amountRaw.toString()),
-            style = MaterialTheme.typography.body1,
+            style = MaterialTheme.typography.bodyLarge,
             modifier = Modifier
                 .padding(vertical = 8.dp)
         )
@@ -80,7 +79,7 @@ fun ScreenIBAN(
         DetailRow(stringResource(R.string.withdraw_exchange), 
status.exchangeBaseUrl, false)
         Text(
             text = stringResource(R.string.withdraw_manual_ready_warning),
-            style = MaterialTheme.typography.body2,
+            style = MaterialTheme.typography.bodyMedium,
             color = colorResource(R.color.notice_text),
             modifier = Modifier
                 .align(Alignment.CenterHorizontally)
@@ -102,14 +101,14 @@ fun ScreenIBAN(
         if (onCancelClick != null) {
             Button(
                 onClick = onCancelClick,
-                colors = ButtonDefaults.buttonColors(backgroundColor = 
colorResource(R.color.red)),
+                colors = ButtonDefaults.buttonColors(containerColor = 
MaterialTheme.colorScheme.error),
                 modifier = Modifier
                     .padding(vertical = 16.dp)
                     .align(Alignment.End),
             ) {
                 Text(
                     text = 
stringResource(R.string.withdraw_manual_ready_cancel),
-                    color = Color.White,
+                    color = MaterialTheme.colorScheme.onError,
                 )
             }
         }
@@ -125,7 +124,7 @@ fun DetailRow(label: String, content: String, copy: Boolean 
= true) {
                 .weight(0.3f)) {
             Text(
                 text = label,
-                style = MaterialTheme.typography.body1,
+                style = MaterialTheme.typography.bodyLarge,
                 fontWeight = if (copy) FontWeight.Bold else FontWeight.Normal,
             )
             if (copy) {
@@ -136,7 +135,7 @@ fun DetailRow(label: String, content: String, copy: Boolean 
= true) {
         }
         Text(
             text = content,
-            style = MaterialTheme.typography.body1,
+            style = MaterialTheme.typography.bodyLarge,
             modifier = Modifier
                 .padding(bottom = 8.dp)
                 .weight(0.7f)
diff --git a/wallet/src/main/res/drawable/ic_unarchive.xml 
b/wallet/src/main/res/drawable/ic_unarchive.xml
index e6faf51..8a48bba 100644
--- a/wallet/src/main/res/drawable/ic_unarchive.xml
+++ b/wallet/src/main/res/drawable/ic_unarchive.xml
@@ -17,10 +17,10 @@
 <vector xmlns:android="http://schemas.android.com/apk/res/android";
     android:width="24dp"
     android:height="24dp"
-    android:tint="#000000"
+    android:tint="?attr/colorControlNormal"
     android:viewportWidth="24"
     android:viewportHeight="24">
     <path
-        android:fillColor="?attr/colorControlNormal"
+        android:fillColor="#FF000000"
         android:pathData="M20.55,5.22l-1.39,-1.68C18.88,3.21 18.47,3 
18,3H6C5.53,3 5.12,3.21 4.85,3.55L3.46,5.22C3.17,5.57 3,6.01 3,6.5V19c0,1.1 
0.89,2 2,2h14c1.1,0 2,-0.9 2,-2V6.5C21,6.01 20.83,5.57 
20.55,5.22zM12,9.5l5.5,5.5H14v2h-4v-2H6.5L12,9.5zM5.12,5l0.82,-1h12l0.93,1H5.12z"
 />
 </vector>
diff --git a/wallet/src/main/res/layout/app_content_main.xml 
b/wallet/src/main/res/layout/app_content_main.xml
index 6937e59..b53717f 100644
--- a/wallet/src/main/res/layout/app_content_main.xml
+++ b/wallet/src/main/res/layout/app_content_main.xml
@@ -36,14 +36,14 @@
                 style="@style/AppTheme.Toolbar"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
+                android:theme="@style/Widget.Material3.ActionBar.Solid"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent" />
 
             <me.zhanghai.android.materialprogressbar.MaterialProgressBar
                 android:id="@+id/progress_bar"
-                
style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal"
+                style="@style/Widget.MaterialProgressBar.ProgressBar"
                 android:layout_width="0dp"
                 android:layout_height="4dp"
                 android:elevation="4dp"
diff --git a/wallet/src/main/res/layout/dialog_exchange_add.xml 
b/wallet/src/main/res/layout/dialog_exchange_add.xml
index dfa0f70..bf90177 100644
--- a/wallet/src/main/res/layout/dialog_exchange_add.xml
+++ b/wallet/src/main/res/layout/dialog_exchange_add.xml
@@ -22,7 +22,7 @@
 
     <com.google.android.material.textfield.TextInputLayout
         android:id="@+id/urlLayout"
-        
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
+        style="@style/Widget.Material3.TextInputLayout.OutlinedBox.Dense"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_margin="16dp"
diff --git a/wallet/src/main/res/layout/fragment_error.xml 
b/wallet/src/main/res/layout/fragment_error.xml
index b9f585f..2af166a 100644
--- a/wallet/src/main/res/layout/fragment_error.xml
+++ b/wallet/src/main/res/layout/fragment_error.xml
@@ -29,13 +29,13 @@
         android:alpha="0.56"
         android:src="@drawable/ic_error"
         app:layout_constraintBottom_toTopOf="@+id/errorTitle"
-        app:layout_constraintDimensionRatio="1:1"
+        app:layout_constraintDimensionRatio="1.5:1"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintVertical_bias="0.0"
         app:layout_constraintVertical_chainStyle="packed"
-        app:tint="@color/red"
+        app:tint="?colorError"
         tools:ignore="ContentDescription" />
 
     <TextView
@@ -45,7 +45,7 @@
         android:layout_margin="16dp"
         android:gravity="center_horizontal|top"
         android:minHeight="64dp"
-        android:textColor="@color/red"
+        android:textColor="?colorError"
         app:autoSizeMaxTextSize="40sp"
         app:autoSizeTextType="uniform"
         app:layout_constraintBottom_toTopOf="@+id/errorMessage"
@@ -60,7 +60,7 @@
         android:layout_height="wrap_content"
         android:layout_margin="16dp"
         android:gravity="center"
-        android:textAppearance="@style/TextAppearance.AppCompat.Medium"
+        android:textAppearance="@style/TextAppearance.Material3.TitleMedium"
         app:layout_constraintBottom_toTopOf="@+id/errorDevMessage"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
@@ -74,7 +74,7 @@
         android:layout_margin="16dp"
         android:fontFamily="monospace"
         android:gravity="center"
-        android:textColor="@color/red"
+        android:textColor="?colorError"
         android:textIsSelectable="true"
         android:visibility="gone"
         app:layout_constraintBottom_toTopOf="@+id/backButton"
diff --git a/wallet/src/main/res/layout/fragment_exchange_fees.xml 
b/wallet/src/main/res/layout/fragment_exchange_fees.xml
index 6f8814f..03d69f5 100644
--- a/wallet/src/main/res/layout/fragment_exchange_fees.xml
+++ b/wallet/src/main/res/layout/fragment_exchange_fees.xml
@@ -44,7 +44,7 @@
             app:layout_constraintStart_toEndOf="@+id/withdrawFeeLabel"
             app:layout_constraintTop_toTopOf="@+id/withdrawFeeLabel"
             tools:text="-0.23 TESTKUDOS"
-            tools:textColor="@color/red" />
+            tools:textColor="?colorError" />
 
         <TextView
             android:id="@+id/overheadLabel"
@@ -64,7 +64,7 @@
             app:layout_constraintStart_toEndOf="@+id/overheadLabel"
             app:layout_constraintTop_toTopOf="@+id/overheadLabel"
             tools:text="-0.42 TESTKUDOS"
-            tools:textColor="@color/red" />
+            tools:textColor="?colorError" />
 
         <TextView
             android:id="@+id/expirationLabel"
diff --git a/wallet/src/main/res/layout/fragment_manual_withdraw.xml 
b/wallet/src/main/res/layout/fragment_manual_withdraw.xml
index ec176ff..9225d16 100644
--- a/wallet/src/main/res/layout/fragment_manual_withdraw.xml
+++ b/wallet/src/main/res/layout/fragment_manual_withdraw.xml
@@ -20,12 +20,13 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <Button
+    <com.google.android.material.button.MaterialButton
         android:id="@+id/qrCodeButton"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginTop="32dp"
-        android:drawableLeft="@drawable/ic_scan_qr"
+        app:icon="@drawable/ic_scan_qr"
+        app:iconTint="?colorOnPrimary"
         android:text="@string/button_scan_qr_code"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintHorizontal_bias="0.5"
@@ -57,7 +58,7 @@
 
     <com.google.android.material.textfield.TextInputLayout
         android:id="@+id/amountLayout"
-        
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
+        style="@style/Widget.Material3.TextInputLayout.OutlinedBox.Dense"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginStart="16dp"
diff --git a/wallet/src/main/res/layout/fragment_prompt_tip.xml 
b/wallet/src/main/res/layout/fragment_prompt_tip.xml
index 941274f..e3b32cd 100644
--- a/wallet/src/main/res/layout/fragment_prompt_tip.xml
+++ b/wallet/src/main/res/layout/fragment_prompt_tip.xml
@@ -114,7 +114,7 @@
         android:layout_marginTop="8dp"
         android:layout_marginEnd="16dp"
         android:gravity="center"
-        android:textColor="@color/red"
+        android:textColor="?colorError"
         android:textSize="20sp"
         android:visibility="invisible"
         app:layout_constraintBottom_toTopOf="@+id/exchangeIntroView"
diff --git a/wallet/src/main/res/layout/fragment_prompt_withdraw.xml 
b/wallet/src/main/res/layout/fragment_prompt_withdraw.xml
index 03e7d1a..7b63d1b 100644
--- a/wallet/src/main/res/layout/fragment_prompt_withdraw.xml
+++ b/wallet/src/main/res/layout/fragment_prompt_withdraw.xml
@@ -114,7 +114,7 @@
         android:layout_marginTop="8dp"
         android:layout_marginEnd="16dp"
         android:gravity="center"
-        android:textColor="@color/red"
+        android:textColor="?colorError"
         android:textSize="20sp"
         android:visibility="invisible"
         app:layout_constraintBottom_toTopOf="@+id/exchangeIntroView"
diff --git a/wallet/src/main/res/layout/fragment_review_exchange_tos.xml 
b/wallet/src/main/res/layout/fragment_review_exchange_tos.xml
index ec8d996..20c1013 100644
--- a/wallet/src/main/res/layout/fragment_review_exchange_tos.xml
+++ b/wallet/src/main/res/layout/fragment_review_exchange_tos.xml
@@ -48,7 +48,7 @@
         android:layout_height="wrap_content"
         android:layout_margin="16dp"
         android:gravity="center"
-        android:textColor="@color/red"
+        android:textColor="?colorError"
         android:textSize="16sp"
         android:visibility="invisible"
         app:layout_constraintBottom_toBottomOf="parent"
diff --git a/wallet/src/main/res/layout/fragment_transaction_payment.xml 
b/wallet/src/main/res/layout/fragment_transaction_payment.xml
index c5f5f81..71447dd 100644
--- a/wallet/src/main/res/layout/fragment_transaction_payment.xml
+++ b/wallet/src/main/res/layout/fragment_transaction_payment.xml
@@ -39,6 +39,7 @@
             android:id="@+id/amountPaidWithFeesLabel"
             style="@style/TransactionLabel"
             android:text="@string/transaction_paid"
+            app:layout_constraintBottom_toTopOf="@+id/amountPaidWithFeesView"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/timeView" />
@@ -119,6 +120,7 @@
             android:text="@string/transactions_delete"
             app:backgroundTint="@color/red"
             app:icon="@drawable/ic_delete"
+            app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/orderIdView" />
diff --git a/wallet/src/main/res/layout/fragment_transaction_withdrawal.xml 
b/wallet/src/main/res/layout/fragment_transaction_withdrawal.xml
index 47dbafb..100ddbc 100644
--- a/wallet/src/main/res/layout/fragment_transaction_withdrawal.xml
+++ b/wallet/src/main/res/layout/fragment_transaction_withdrawal.xml
@@ -54,12 +54,14 @@
             app:layout_constraintTop_toBottomOf="@+id/effectiveAmountLabel"
             tools:text="23.42 TESTKUDOS" />
 
-        <Button
+        <com.google.android.material.button.MaterialButton
             android:id="@+id/confirmWithdrawalButton"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:drawableLeft="@drawable/ic_account_balance"
+            app:icon="@drawable/ic_account_balance"
             android:text="@string/withdraw_button_confirm_bank"
+            android:textColor="?colorOnPrimary"
+            app:iconTint="?colorOnPrimary"
             app:drawableTint="?attr/colorOnPrimarySurface"
             app:layout_constraintBottom_toTopOf="@+id/actionButton"
             app:layout_constraintEnd_toEndOf="parent"
@@ -72,7 +74,8 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginVertical="10dp"
-            android:backgroundTint="@color/colorAccent"
+            android:textColor="?colorOnTertiary"
+            android:backgroundTint="?colorTertiary"
             android:visibility="gone"
             app:layout_constraintBottom_toTopOf="@id/chosenAmountLabel"
             app:layout_constraintEnd_toEndOf="parent"
@@ -111,7 +114,7 @@
         <TextView
             android:id="@+id/feeView"
             style="@style/TransactionContent"
-            android:textColor="@color/red"
+            android:textColor="?colorError"
             app:layout_constraintBottom_toTopOf="@+id/exchangeLabel"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
@@ -142,8 +145,11 @@
             android:layout_height="wrap_content"
             android:layout_marginVertical="10dp"
             android:text="@string/transactions_delete"
-            app:backgroundTint="@color/red"
+            app:backgroundTint="?colorError"
             app:icon="@drawable/ic_delete"
+            android:textColor="?colorOnError"
+            app:iconTint="?colorOnError"
+            app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/exchangeView" />
diff --git a/wallet/src/main/res/layout/fragment_transactions.xml 
b/wallet/src/main/res/layout/fragment_transactions.xml
index bad79ea..00bde32 100644
--- a/wallet/src/main/res/layout/fragment_transactions.xml
+++ b/wallet/src/main/res/layout/fragment_transactions.xml
@@ -22,9 +22,9 @@
 
     <com.google.android.material.button.MaterialButton
         android:id="@+id/sendButton"
-        style="@style/Widget.MaterialComponents.Button.TextButton"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_marginStart="10dp"
         android:text="@string/transactions_send_funds"
         app:layout_constraintBottom_toTopOf="@+id/divider"
         app:layout_constraintStart_toStartOf="parent"
@@ -32,9 +32,9 @@
 
     <com.google.android.material.button.MaterialButton
         android:id="@+id/receiveButton"
-        style="@style/Widget.MaterialComponents.Button.TextButton"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_marginHorizontal="10dp"
         android:text="@string/transactions_receive_funds"
         app:layout_constraintBottom_toTopOf="@+id/divider"
         app:layout_constraintEnd_toStartOf="@+id/amount"
diff --git a/wallet/src/main/res/layout/fragment_uri_input.xml 
b/wallet/src/main/res/layout/fragment_uri_input.xml
index 1e9934f..6ea1a13 100644
--- a/wallet/src/main/res/layout/fragment_uri_input.xml
+++ b/wallet/src/main/res/layout/fragment_uri_input.xml
@@ -22,7 +22,7 @@
 
     <com.google.android.material.textfield.TextInputLayout
         android:id="@+id/uriLayout"
-        
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
+        style="@style/Widget.Material3.TextInputLayout.OutlinedBox.Dense"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_margin="16dp"
diff --git a/wallet/src/main/res/layout/list_item_transaction.xml 
b/wallet/src/main/res/layout/list_item_transaction.xml
index 232afb8..5dfdf14 100644
--- a/wallet/src/main/res/layout/list_item_transaction.xml
+++ b/wallet/src/main/res/layout/list_item_transaction.xml
@@ -67,7 +67,8 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:visibility="gone"
-        app:backgroundTint="@color/colorAccent"
+        android:textColor="?colorOnTertiary"
+        app:backgroundTint="?colorTertiary"
         app:layout_constraintStart_toStartOf="@id/title"
         app:layout_constraintTop_toBottomOf="@id/extraInfoView"
         tools:text="Complete KYC"
diff --git a/wallet/src/main/res/layout/nav_header_main.xml 
b/wallet/src/main/res/layout/nav_header_main.xml
index e70e80f..6837814 100644
--- a/wallet/src/main/res/layout/nav_header_main.xml
+++ b/wallet/src/main/res/layout/nav_header_main.xml
@@ -39,7 +39,7 @@
         android:layout_marginTop="8dp"
         android:layout_marginEnd="16dp"
         android:text="@string/nav_header_title"
-        android:textAppearance="@style/TextAppearance.AppCompat.Body1"
+        android:textAppearance="@style/TextAppearance.Material3.BodyLarge"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/talerLogoView" />
diff --git a/wallet/src/main/res/layout/list_item_age.xml 
b/wallet/src/main/res/values-night/styles.xml
similarity index 60%
copy from wallet/src/main/res/layout/list_item_age.xml
copy to wallet/src/main/res/values-night/styles.xml
index 2d3a6e5..d61986e 100644
--- a/wallet/src/main/res/layout/list_item_age.xml
+++ b/wallet/src/main/res/values-night/styles.xml
@@ -14,13 +14,15 @@
   ~ GNU Taler; see the file COPYING.  If not, see 
<http://www.gnu.org/licenses/>
   -->
 
-<TextView xmlns:android="http://schemas.android.com/apk/res/android";
-    android:id="@android:id/text1"
-    style="?android:attr/spinnerItemStyle"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:ellipsize="marquee"
-    android:padding="8dp"
-    android:singleLine="true"
-    android:textAlignment="inherit"
-    android:textSize="20sp" />
+
+<resources xmlns:tools="http://schemas.android.com/tools";>
+
+    <style name="AppTheme" parent="AppTheme.Dark">
+        <item name="windowActionModeOverlay">true</item>
+        <item name="android:statusBarColor">?colorSurface</item>
+        <item name="android:windowLightStatusBar" 
tools:targetApi="m">false</item>
+        <item name="android:navigationBarColor">?colorSurface</item>
+        <item name="android:windowLightNavigationBar" 
tools:targetApi="o_mr1">false</item>
+    </style>
+
+</resources>
diff --git a/wallet/src/main/res/values/defaults.xml 
b/wallet/src/main/res/values-v27/styles.xml
similarity index 66%
copy from wallet/src/main/res/values/defaults.xml
copy to wallet/src/main/res/values-v27/styles.xml
index 0e2a6a1..5a21b91 100644
--- a/wallet/src/main/res/values/defaults.xml
+++ b/wallet/src/main/res/values-v27/styles.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?><!--
   ~ This file is part of GNU Taler
-  ~ (C) 2020 Taler Systems S.A.
+  ~ (C) 2023 Taler Systems S.A.
   ~
   ~ GNU Taler is free software; you can redistribute it and/or modify it under 
the
   ~ terms of the GNU General Public License as published by the Free Software
@@ -16,6 +16,11 @@
 
 <resources>
 
-    <bool name="settings_backup_default">true</bool>
+    <style name="AppTheme" parent="AppTheme.Light">
+        <item name="android:statusBarColor">?colorSurface</item>
+        <item name="android:windowLightStatusBar">true</item>
+        <item name="android:navigationBarColor">?colorSurface</item>
+        <item name="android:windowLightNavigationBar">true</item>
+    </style>
 
 </resources>
\ No newline at end of file
diff --git a/wallet/src/main/res/values/colors.xml 
b/wallet/src/main/res/values/colors.xml
index ba2804e..ce76c1d 100644
--- a/wallet/src/main/res/values/colors.xml
+++ b/wallet/src/main/res/values/colors.xml
@@ -18,4 +18,67 @@
     <color name="colorPrimary">#3047a3</color>
     <color name="colorPrimaryDark">#152238</color>
     <color name="colorAccent">#BB1D24</color>
+
+    <!-- Material 3 theme builder -->
+    <color name="seed">#3047a3</color>
+    <color name="md_theme_light_primary">#4157B4</color>
+    <color name="md_theme_light_onPrimary">#FFFFFF</color>
+    <color name="md_theme_light_primaryContainer">#DDE1FF</color>
+    <color name="md_theme_light_onPrimaryContainer">#001355</color>
+    <color name="md_theme_light_secondary">#2B5EA7</color>
+    <color name="md_theme_light_onSecondary">#FFFFFF</color>
+    <color name="md_theme_light_secondaryContainer">#D7E3FF</color>
+    <color name="md_theme_light_onSecondaryContainer">#001B3E</color>
+    <color name="md_theme_light_tertiary">#B91B23</color>
+    <color name="md_theme_light_onTertiary">#FFFFFF</color>
+    <color name="md_theme_light_tertiaryContainer">#FFDAD7</color>
+    <color name="md_theme_light_onTertiaryContainer">#410004</color>
+    <color name="md_theme_light_error">#BA1A1A</color>
+    <color name="md_theme_light_errorContainer">#FFDAD6</color>
+    <color name="md_theme_light_onError">#FFFFFF</color>
+    <color name="md_theme_light_onErrorContainer">#410002</color>
+    <color name="md_theme_light_background">#F8FDFF</color>
+    <color name="md_theme_light_onBackground">#001F25</color>
+    <color name="md_theme_light_surface">#F8FDFF</color>
+    <color name="md_theme_light_onSurface">#001F25</color>
+    <color name="md_theme_light_surfaceVariant">#E2E1EC</color>
+    <color name="md_theme_light_onSurfaceVariant">#45464F</color>
+    <color name="md_theme_light_outline">#767680</color>
+    <color name="md_theme_light_inverseOnSurface">#D6F6FF</color>
+    <color name="md_theme_light_inverseSurface">#00363F</color>
+    <color name="md_theme_light_inversePrimary">#B8C3FF</color>
+    <color name="md_theme_light_shadow">#000000</color>
+    <color name="md_theme_light_surfaceTint">#4157B4</color>
+    <color name="md_theme_light_outlineVariant">#C6C5D0</color>
+    <color name="md_theme_light_scrim">#000000</color>
+    <color name="md_theme_dark_primary">#B8C3FF</color>
+    <color name="md_theme_dark_onPrimary">#042584</color>
+    <color name="md_theme_dark_primaryContainer">#263E9A</color>
+    <color name="md_theme_dark_onPrimaryContainer">#DDE1FF</color>
+    <color name="md_theme_dark_secondary">#AAC7FF</color>
+    <color name="md_theme_dark_onSecondary">#002F65</color>
+    <color name="md_theme_dark_secondaryContainer">#00458E</color>
+    <color name="md_theme_dark_onSecondaryContainer">#D7E3FF</color>
+    <color name="md_theme_dark_tertiary">#FFB3AD</color>
+    <color name="md_theme_dark_onTertiary">#680009</color>
+    <color name="md_theme_dark_tertiaryContainer">#930012</color>
+    <color name="md_theme_dark_onTertiaryContainer">#FFDAD7</color>
+    <color name="md_theme_dark_error">#FFB4AB</color>
+    <color name="md_theme_dark_errorContainer">#93000A</color>
+    <color name="md_theme_dark_onError">#690005</color>
+    <color name="md_theme_dark_onErrorContainer">#FFDAD6</color>
+    <color name="md_theme_dark_background">#001F25</color>
+    <color name="md_theme_dark_onBackground">#A6EEFF</color>
+    <color name="md_theme_dark_surface">#001F25</color>
+    <color name="md_theme_dark_onSurface">#A6EEFF</color>
+    <color name="md_theme_dark_surfaceVariant">#45464F</color>
+    <color name="md_theme_dark_onSurfaceVariant">#C6C5D0</color>
+    <color name="md_theme_dark_outline">#90909A</color>
+    <color name="md_theme_dark_inverseOnSurface">#001F25</color>
+    <color name="md_theme_dark_inverseSurface">#A6EEFF</color>
+    <color name="md_theme_dark_inversePrimary">#4157B4</color>
+    <color name="md_theme_dark_shadow">#000000</color>
+    <color name="md_theme_dark_surfaceTint">#B8C3FF</color>
+    <color name="md_theme_dark_outlineVariant">#45464F</color>
+    <color name="md_theme_dark_scrim">#000000</color>
 </resources>
diff --git a/wallet/src/main/res/values/styles.xml 
b/wallet/src/main/res/values/styles.xml
index 33e31a3..d7d939f 100644
--- a/wallet/src/main/res/values/styles.xml
+++ b/wallet/src/main/res/values/styles.xml
@@ -14,32 +14,91 @@
   ~ GNU Taler; see the file COPYING.  If not, see 
<http://www.gnu.org/licenses/>
   -->
 
-<resources>
+<resources xmlns:tools="http://schemas.android.com/tools";>
 
-    <style name="AppTheme" 
parent="Theme.MaterialComponents.DayNight.DarkActionBar">
-        <item name="colorPrimary">@color/colorPrimary</item>
-        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
-        <item name="colorAccent">@color/colorAccent</item>
-        <item name="colorOnPrimary">@android:color/white</item>
+    <style name="AppTheme.Light" parent="Theme.Material3.Light">
+        <!-- Material 3 theme builder -->
+        <item name="colorPrimary">@color/md_theme_light_primary</item>
+        <item name="colorOnPrimary">@color/md_theme_light_onPrimary</item>
+        <item 
name="colorPrimaryContainer">@color/md_theme_light_primaryContainer</item>
+        <item 
name="colorOnPrimaryContainer">@color/md_theme_light_onPrimaryContainer</item>
+        <item name="colorSecondary">@color/md_theme_light_secondary</item>
+        <item name="colorOnSecondary">@color/md_theme_light_onSecondary</item>
+        <item 
name="colorSecondaryContainer">@color/md_theme_light_secondaryContainer</item>
+        <item 
name="colorOnSecondaryContainer">@color/md_theme_light_onSecondaryContainer</item>
+        <item name="colorTertiary">@color/md_theme_light_tertiary</item>
+        <item name="colorOnTertiary">@color/md_theme_light_onTertiary</item>
+        <item 
name="colorTertiaryContainer">@color/md_theme_light_tertiaryContainer</item>
+        <item 
name="colorOnTertiaryContainer">@color/md_theme_light_onTertiaryContainer</item>
+        <item name="colorError">@color/md_theme_light_error</item>
+        <item 
name="colorErrorContainer">@color/md_theme_light_errorContainer</item>
+        <item name="colorOnError">@color/md_theme_light_onError</item>
+        <item 
name="colorOnErrorContainer">@color/md_theme_light_onErrorContainer</item>
+        <item 
name="android:colorBackground">@color/md_theme_light_background</item>
+        <item 
name="colorOnBackground">@color/md_theme_light_onBackground</item>
+        <item name="colorSurface">@color/md_theme_light_surface</item>
+        <item name="colorOnSurface">@color/md_theme_light_onSurface</item>
+        <item 
name="colorSurfaceVariant">@color/md_theme_light_surfaceVariant</item>
+        <item 
name="colorOnSurfaceVariant">@color/md_theme_light_onSurfaceVariant</item>
+        <item name="colorOutline">@color/md_theme_light_outline</item>
+        <item 
name="colorOnSurfaceInverse">@color/md_theme_light_inverseOnSurface</item>
+        <item 
name="colorSurfaceInverse">@color/md_theme_light_inverseSurface</item>
+        <item 
name="colorPrimaryInverse">@color/md_theme_light_inversePrimary</item>
+    </style>
+
+    <style name="AppTheme.Dark" parent="Theme.Material3.Dark">
+        <item name="windowActionModeOverlay">true</item>
+        <item name="android:statusBarColor" 
tools:targetApi="m">?colorSurface</item>
+        <item name="android:windowLightStatusBar" 
tools:targetApi="m">false</item>
+        <item name="android:navigationBarColor" 
tools:targetApi="o_mr1">?colorSurface</item>
+        <item name="android:windowLightNavigationBar" 
tools:targetApi="o_mr1">false</item>
+
+        <!-- Material 3 theme builder -->
+        <item name="colorPrimary">@color/md_theme_dark_primary</item>
+        <item name="colorOnPrimary">@color/md_theme_dark_onPrimary</item>
+        <item 
name="colorPrimaryContainer">@color/md_theme_dark_primaryContainer</item>
+        <item 
name="colorOnPrimaryContainer">@color/md_theme_dark_onPrimaryContainer</item>
+        <item name="colorSecondary">@color/md_theme_dark_secondary</item>
+        <item name="colorOnSecondary">@color/md_theme_dark_onSecondary</item>
+        <item 
name="colorSecondaryContainer">@color/md_theme_dark_secondaryContainer</item>
+        <item 
name="colorOnSecondaryContainer">@color/md_theme_dark_onSecondaryContainer</item>
+        <item name="colorTertiary">@color/md_theme_dark_tertiary</item>
+        <item name="colorOnTertiary">@color/md_theme_dark_onTertiary</item>
+        <item 
name="colorTertiaryContainer">@color/md_theme_dark_tertiaryContainer</item>
+        <item 
name="colorOnTertiaryContainer">@color/md_theme_dark_onTertiaryContainer</item>
+        <item name="colorError">@color/md_theme_dark_error</item>
+        <item 
name="colorErrorContainer">@color/md_theme_dark_errorContainer</item>
+        <item name="colorOnError">@color/md_theme_dark_onError</item>
+        <item 
name="colorOnErrorContainer">@color/md_theme_dark_onErrorContainer</item>
+        <item 
name="android:colorBackground">@color/md_theme_dark_background</item>
+        <item name="colorOnBackground">@color/md_theme_dark_onBackground</item>
+        <item name="colorSurface">@color/md_theme_dark_surface</item>
+        <item name="colorOnSurface">@color/md_theme_dark_onSurface</item>
+        <item 
name="colorSurfaceVariant">@color/md_theme_dark_surfaceVariant</item>
+        <item 
name="colorOnSurfaceVariant">@color/md_theme_dark_onSurfaceVariant</item>
+        <item name="colorOutline">@color/md_theme_dark_outline</item>
+        <item 
name="colorOnSurfaceInverse">@color/md_theme_dark_inverseOnSurface</item>
+        <item 
name="colorSurfaceInverse">@color/md_theme_dark_inverseSurface</item>
+        <item 
name="colorPrimaryInverse">@color/md_theme_dark_inversePrimary</item>
+    </style>
 
+    <style name="AppTheme" parent="AppTheme.Light">
         <item name="windowActionModeOverlay">true</item>
     </style>
 
     <style name="AppTheme.NoActionBar">
         <item name="windowActionBar">false</item>
         <item name="windowNoTitle">true</item>
-        <item name="android:statusBarColor">@android:color/transparent</item>
     </style>
 
-    <style name="AppTheme.AppBarOverlay" 
parent="ThemeOverlay.MaterialComponents.ActionBar" />
+    <style name="AppTheme.AppBarOverlay" 
parent="Widget.Material3.ActionBar.Solid" />
 
-    <style name="AppTheme.Toolbar" 
parent="Widget.MaterialComponents.Toolbar.Primary" />
+    <style name="AppTheme.Toolbar" parent="Widget.Material3.Toolbar" />
 
-    <style name="DialogTheme" 
parent="Theme.MaterialComponents.DayNight.Dialog.Alert" />
+    <style name="DialogTheme" parent="Theme.Material3.DayNight.Dialog.Alert" />
 
     <style name="TransactionTitle">
         <item name="android:textSize">16sp</item>
-        <item name="android:textColor">?android:textColorPrimary</item>
     </style>
 
     <style name="TransactionLabel">
@@ -72,13 +131,11 @@
         <item name="cardElevation">8dp</item>
     </style>
 
-    <style name="FabStyle" 
parent="Widget.MaterialComponents.FloatingActionButton">
+    <style name="FabStyle" 
parent="Widget.Material3.FloatingActionButton.Primary">
         <item name="android:layout_gravity">bottom|end</item>
         <item name="android:layout_marginEnd">16dp</item>
         <item name="android:layout_marginBottom">16dp</item>
-        <item name="backgroundTint">@color/colorPrimary</item>
         <item name="layout_dodgeInsetEdges">bottom</item>
-        <item name="tint">?attr/colorOnPrimary</item>
     </style>
 
 </resources>

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]