From 193dc7de8fae4f63064071a6f8a753bfa71554dd Mon Sep 17 00:00:00 2001 From: Marten Rebane Date: Fri, 29 May 2026 14:46:46 +0300 Subject: [PATCH] Add new colors --- .../ria/DigiDoc/fragment/screen/InitScreen.kt | 3 + .../crypto/ColoredRecipientStatusText.kt | 10 +- .../DigiDoc/ui/component/home/ActionButton.kt | 52 +++------ .../ui/component/menu/LanguageButton.kt | 9 +- .../DigiDoc/ui/component/myeid/MyEidScreen.kt | 2 +- .../component/myeid/mydata/MyEidMyDataItem.kt | 13 +-- .../ui/component/shared/PrimaryButton.kt | 11 +- .../component/shared/PrimaryOutlinedButton.kt | 6 +- .../DigiDoc/ui/component/shared/TagBadge.kt | 7 +- .../ria/DigiDoc/ui/component/shared/TopBar.kt | 6 +- .../component/shared/VerticalButtonColumn.kt | 9 +- .../signing/ColoredSignedStatusText.kt | 11 +- .../kotlin/ee/ria/DigiDoc/ui/theme/Color.kt | 110 ++++++++++-------- .../kotlin/ee/ria/DigiDoc/ui/theme/Theme.kt | 104 ++++++++++------- .../kotlin/ee/ria/DigiDoc/ui/theme/Type.kt | 2 - 15 files changed, 178 insertions(+), 177 deletions(-) diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/InitScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/InitScreen.kt index 426615b03..98b4ea057 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/InitScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/InitScreen.kt @@ -36,6 +36,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -91,6 +92,7 @@ fun InitScreen( Text( text = stringResource(id = R.string.digidoc_all_caps), style = MaterialTheme.typography.displayLarge, + color = Color.White, modifier = modifier .padding(bottom = LPadding) @@ -110,6 +112,7 @@ fun InitScreen( Text( text = stringResource(id = R.string.ria), style = MaterialTheme.typography.displaySmall, + color = Color.White, modifier = modifier .padding(bottom = MPadding) diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/ColoredRecipientStatusText.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/ColoredRecipientStatusText.kt index 7119d3a51..fc14b5443 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/ColoredRecipientStatusText.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/ColoredRecipientStatusText.kt @@ -24,14 +24,12 @@ package ee.ria.DigiDoc.ui.component.crypto import androidx.compose.foundation.focusable import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow +import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag import ee.ria.DigiDoc.ui.component.shared.TagBadge -import ee.ria.DigiDoc.ui.theme.Green_2_50 -import ee.ria.DigiDoc.ui.theme.Green_2_700 -import ee.ria.DigiDoc.ui.theme.Red50 -import ee.ria.DigiDoc.ui.theme.Red800 +import ee.ria.DigiDoc.ui.theme.extendedColorScheme @OptIn(ExperimentalLayoutApi::class) @Composable @@ -40,8 +38,8 @@ fun ColoredRecipientStatusText( modifier: Modifier = Modifier, expired: Boolean = false, ) { - val tagBackgroundColor = if (!expired) Green_2_50 else Red50 - val tagContentColor = if (!expired) Green_2_700 else Red800 + val tagBackgroundColor = if (!expired) MaterialTheme.extendedColorScheme.successContainer else MaterialTheme.colorScheme.errorContainer + val tagContentColor = if (!expired) MaterialTheme.extendedColorScheme.onSuccessContainer else MaterialTheme.colorScheme.onErrorContainer FlowRow( modifier = modifier, diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/home/ActionButton.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/home/ActionButton.kt index 3c4016a9d..597a28662 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/home/ActionButton.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/home/ActionButton.kt @@ -30,12 +30,10 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.shape.CircleShape -import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Button import androidx.compose.material3.ButtonColors import androidx.compose.material3.Card @@ -62,11 +60,9 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.constraintlayout.compose.ConstraintLayout import ee.ria.DigiDoc.R import ee.ria.DigiDoc.ui.component.shared.MiddleEllipsizeMultilineText -import ee.ria.DigiDoc.ui.theme.Dimensions.MSCornerRadius import ee.ria.DigiDoc.ui.theme.Dimensions.XSPadding -import ee.ria.DigiDoc.ui.theme.Dimensions.buttonShadowElevation +import ee.ria.DigiDoc.ui.theme.Dimensions.XXSPadding import ee.ria.DigiDoc.ui.theme.Dimensions.iconSizeXXS -import ee.ria.DigiDoc.ui.theme.Dimensions.zeroPadding import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme import ee.ria.DigiDoc.ui.theme.buttonRoundedCornerShape @@ -83,35 +79,18 @@ fun ActionButton( ) { val titleText = stringResource(id = title) - Box( - modifier = - modifier - .fillMaxWidth() - .padding(vertical = XSPadding), - contentAlignment = Alignment.Center, + Card( + shape = buttonRoundedCornerShape, + colors = + CardDefaults.cardColors( + containerColor = MaterialTheme.colorScheme.surfaceContainerLow, + ), + elevation = + CardDefaults.elevatedCardElevation( + defaultElevation = XXSPadding, + ), + modifier = modifier.fillMaxWidth().padding(vertical = XSPadding), ) { - Box( - modifier = - modifier - .matchParentSize() - .offset(y = buttonShadowElevation) - .background( - color = MaterialTheme.colorScheme.primaryContainer, - shape = RoundedCornerShape(MSCornerRadius), - ), - ) - Card( - shape = buttonRoundedCornerShape, - colors = - CardDefaults.cardColors( - containerColor = MaterialTheme.colorScheme.surfaceContainerLow, - ), - elevation = - CardDefaults.elevatedCardElevation( - defaultElevation = buttonShadowElevation, - ), - modifier = modifier.padding(bottom = zeroPadding), - ) { Button( modifier = modifier @@ -157,7 +136,7 @@ fun ActionButton( Modifier .wrapContentHeight() .background( - color = MaterialTheme.colorScheme.primaryContainer, + color = MaterialTheme.colorScheme.primary, shape = CircleShape, ), ) { @@ -189,7 +168,7 @@ fun ActionButton( text = titleText, modifier = modifier - .padding(bottom = XSPadding / 2) + .padding(start = XXSPadding, bottom = XSPadding / 2) .wrapContentHeight(align = Alignment.CenterVertically) .semantics { this.contentDescription = contentDescription @@ -201,7 +180,7 @@ fun ActionButton( MiddleEllipsizeMultilineText( modifier = modifier - .padding(zeroPadding) + .padding(horizontal = XXSPadding) .wrapContentHeight(align = Alignment.CenterVertically) .focusable(false) .semantics { @@ -215,7 +194,6 @@ fun ActionButton( } } } - } } } diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/menu/LanguageButton.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/menu/LanguageButton.kt index 7f5a2fc04..be1128b71 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/menu/LanguageButton.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/menu/LanguageButton.kt @@ -30,7 +30,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.wrapContentHeight 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.Surface @@ -57,7 +57,6 @@ import ee.ria.DigiDoc.ui.theme.Dimensions.SPadding import ee.ria.DigiDoc.ui.theme.Dimensions.XSPadding import ee.ria.DigiDoc.ui.theme.Dimensions.iconSizeXXS import ee.ria.DigiDoc.ui.theme.Dimensions.zeroPadding -import ee.ria.DigiDoc.ui.theme.OnPrimary import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme @OptIn(ExperimentalComposeUiApi::class) @@ -82,11 +81,9 @@ fun LanguageButton( shape = RectangleShape, onClick = onClickItem, colors = - ButtonColors( + ButtonDefaults.buttonColors( containerColor = Color.Transparent, - contentColor = OnPrimary, - disabledContainerColor = Color.Transparent, - disabledContentColor = Color.Transparent, + contentColor = Color.White ), contentPadding = PaddingValues( diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/MyEidScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/MyEidScreen.kt index 5f0510438..0e38acf42 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/MyEidScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/MyEidScreen.kt @@ -670,4 +670,4 @@ fun MyEidScreen( ) } -fun getAlphaForBlockedState(isBlocked: Boolean) = if (!isBlocked) 1f else 0.7f +fun getAlphaForBlockedState(isBlocked: Boolean) = if (!isBlocked) 1f else 0.8f diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/mydata/MyEidMyDataItem.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/mydata/MyEidMyDataItem.kt index 9a12581e4..07b7b92c1 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/mydata/MyEidMyDataItem.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/mydata/MyEidMyDataItem.kt @@ -51,11 +51,8 @@ import androidx.compose.ui.tooling.preview.Preview import ee.ria.DigiDoc.R import ee.ria.DigiDoc.ui.component.shared.TagBadge import ee.ria.DigiDoc.ui.theme.Dimensions.SPadding -import ee.ria.DigiDoc.ui.theme.Green_2_50 -import ee.ria.DigiDoc.ui.theme.Green_2_700 import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme -import ee.ria.DigiDoc.ui.theme.Red50 -import ee.ria.DigiDoc.ui.theme.Red500 +import ee.ria.DigiDoc.ui.theme.extendedColorScheme import ee.ria.DigiDoc.utils.extensions.notAccessible @OptIn(ExperimentalComposeUiApi::class) @@ -130,15 +127,15 @@ fun MyEidMyDataItem( text = status.getLocalized(context), backgroundColor = if (status == MyEidDocumentStatus.VALID) { - Green_2_50 + MaterialTheme.extendedColorScheme.successContainer } else { - Red500 + MaterialTheme.colorScheme.errorContainer }, contentColor = if (status == MyEidDocumentStatus.VALID) { - Green_2_700 + MaterialTheme.extendedColorScheme.onSuccessContainer } else { - Red50 + MaterialTheme.colorScheme.onErrorContainer }, ) } diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/PrimaryButton.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/PrimaryButton.kt index de465f3ba..592712453 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/PrimaryButton.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/PrimaryButton.kt @@ -31,7 +31,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Button -import androidx.compose.material3.ButtonColors +import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -85,11 +85,9 @@ fun PrimaryButton( contentPadding = PaddingValues(zeroPadding), enabled = enabled, colors = - ButtonColors( + ButtonDefaults.buttonColors( containerColor = containerColor, contentColor = contentColor, - disabledContainerColor = MaterialTheme.colorScheme.background, - disabledContentColor = MaterialTheme.colorScheme.tertiary, ), border = if (isSubButton) { @@ -97,11 +95,6 @@ fun PrimaryButton( width = SBorder, color = contentColor, ) - } else if (!enabled) { - BorderStroke( - width = SBorder, - color = MaterialTheme.colorScheme.tertiary, - ) } else { BorderStroke(noBorderStroke, Transparent) }, diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/PrimaryOutlinedButton.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/PrimaryOutlinedButton.kt index 4e646c0ed..a99929973 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/PrimaryOutlinedButton.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/PrimaryOutlinedButton.kt @@ -32,7 +32,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material3.ButtonColors +import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton @@ -91,11 +91,9 @@ fun PrimaryOutlinedButton( contentPadding = PaddingValues(zeroPadding), enabled = enabled, colors = - ButtonColors( + ButtonDefaults.buttonColors( containerColor = containerColor, contentColor = contentColor, - disabledContainerColor = MaterialTheme.colorScheme.background, - disabledContentColor = MaterialTheme.colorScheme.tertiary, ), onClick = onClickItem, ) { diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/TagBadge.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/TagBadge.kt index bb398d611..a6c3e316c 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/TagBadge.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/TagBadge.kt @@ -36,16 +36,15 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import ee.ria.DigiDoc.ui.theme.Dimensions.SPadding import ee.ria.DigiDoc.ui.theme.Dimensions.XSPadding -import ee.ria.DigiDoc.ui.theme.Green_2_50 -import ee.ria.DigiDoc.ui.theme.Green_2_700 import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme +import ee.ria.DigiDoc.ui.theme.extendedColorScheme @Composable fun TagBadge( text: String, modifier: Modifier = Modifier, - backgroundColor: Color = Green_2_50, - contentColor: Color = Green_2_700, + backgroundColor: Color = MaterialTheme.extendedColorScheme.successContainer, + contentColor: Color = MaterialTheme.extendedColorScheme.onSuccessContainer, ) { Box( modifier = diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/TopBar.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/TopBar.kt index 99105611e..75f2718e5 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/TopBar.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/TopBar.kt @@ -49,7 +49,6 @@ import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusProperties import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.focus.focusTarget -import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.platform.LocalContext @@ -65,7 +64,6 @@ import androidx.core.net.toUri import androidx.lifecycle.asFlow import ee.ria.DigiDoc.R import ee.ria.DigiDoc.ui.theme.Dimensions.iconSizeXXS -import ee.ria.DigiDoc.ui.theme.Red500 import ee.ria.DigiDoc.utilsLib.text.TextUtil import ee.ria.DigiDoc.viewmodel.shared.SharedMenuViewModel import kotlinx.coroutines.CoroutineScope @@ -212,8 +210,8 @@ fun TopBar( badge = { if (extraButtonItemCount > 0) { Badge( - containerColor = Red500, - contentColor = Color.White, + containerColor = MaterialTheme.colorScheme.error, + contentColor = MaterialTheme.colorScheme.onError, ) { Text("$extraButtonItemCount") } diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/VerticalButtonColumn.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/VerticalButtonColumn.kt index bad89ee88..2bb8234ed 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/VerticalButtonColumn.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/VerticalButtonColumn.kt @@ -26,6 +26,7 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -41,8 +42,8 @@ data class VerticalButtonConfig( val contentDescription: String = "", val isEnabled: Boolean = true, val isSubButton: Boolean = true, - val containerColor: Color = Color.White, - val contentColor: Color = Color.Blue, + val containerColor: Color, + val contentColor: Color, val onClick: () -> Unit = {}, val testTag: String = "", ) @@ -85,9 +86,13 @@ fun VerticalButtonColumnPreview() { listOf( VerticalButtonConfig( title = R.string.ok_button, + containerColor = MaterialTheme.colorScheme.primary, + contentColor = MaterialTheme.colorScheme.onPrimary, ), VerticalButtonConfig( title = R.string.cancel_button, + containerColor = MaterialTheme.colorScheme.primary, + contentColor = MaterialTheme.colorScheme.onPrimary, ), ), ) diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/ColoredSignedStatusText.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/ColoredSignedStatusText.kt index 7a8af40cc..873c62455 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/ColoredSignedStatusText.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/ColoredSignedStatusText.kt @@ -34,11 +34,8 @@ import androidx.compose.ui.text.TextStyle import androidx.compose.ui.tooling.preview.Preview import ee.ria.DigiDoc.libdigidoclib.domain.model.ValidatorInterface import ee.ria.DigiDoc.ui.component.shared.TagBadge -import ee.ria.DigiDoc.ui.theme.Green_2_50 -import ee.ria.DigiDoc.ui.theme.Green_2_700 import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme -import ee.ria.DigiDoc.ui.theme.Red50 -import ee.ria.DigiDoc.ui.theme.Red800 +import ee.ria.DigiDoc.ui.theme.extendedColorScheme @OptIn(ExperimentalLayoutApi::class) @Composable @@ -54,11 +51,11 @@ fun ColoredSignedStatusText( status == ValidatorInterface.Status.Warning || status == ValidatorInterface.Status.NonQSCD - val tagBackgroundColor = if (isSignatureValidOrWarning) Green_2_50 else Red50 - val tagContentColor = if (isSignatureValidOrWarning) Green_2_700 else Red800 + val tagBackgroundColor = if (isSignatureValidOrWarning) MaterialTheme.extendedColorScheme.successContainer else MaterialTheme.colorScheme.errorContainer + val tagContentColor = if (isSignatureValidOrWarning) MaterialTheme.extendedColorScheme.onSuccessContainer else MaterialTheme.colorScheme.onErrorContainer val additionalTextColor = if (status == ValidatorInterface.Status.Valid) { - Red800 + MaterialTheme.extendedColorScheme.onWarningContainer } else { MaterialTheme.colorScheme.onErrorContainer } diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/theme/Color.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/theme/Color.kt index 178d62f9e..7c8ad3407 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/theme/Color.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/theme/Color.kt @@ -23,80 +23,94 @@ package ee.ria.DigiDoc.ui.theme import androidx.compose.ui.graphics.Color -// yellow -val Yellow800 = Color(0xFF83612d) - -// red -val Red800 = Color(0xFF571e27) -val Red500 = Color(0xFFad2a45) -val Red50 = Color(0xFFf5ebed) - -// green -val Green_2_50 = Color(0xFFEAF8EA) -val Green_2_700 = Color(0xFF218123) - -val OnPrimary = Color.White val BlueBackground = Color(0xFF003168) -// light -val LightPrimary = Color(0xFF002048) -val LightPrimaryContainer = Color(0xFF194178) -val LightSecondaryContainer = Color(0xFFD9E4FF) -val LightTertiary = Color(0xFF300e41) -val LightTertiaryContainer = Color(0xFF533166) -val LightError = Color(0xFFBA1A1A) -val LightErrorContainer = Color(0xFFFFDAD6) +// Light +val LightPrimary = Color(0xFF003168) +val LightPrimaryContainer = Color(0xFFDDE8F3) +val LightSecondary = Color(0xFF747781) +val LightSecondaryContainer = Color(0xFFE2E2E7) +val LightError = Color(0xFFB00020) +val LightErrorContainer = Color(0xFFF6DBE0) +val LightSuccess = Color(0xFF2FB631) +val LightSuccessContainer = Color(0xFFE0F4E0) +val LightWarning = Color(0xFF7A3E00) +val LightWarningContainer = Color(0xFFFAE7C9) + val LightOnPrimary = Color.White -val LightOnPrimaryContainer = Color(0xFFC5D7FF) -val LightOnSecondaryContainer = Color(0xFF3D4960) -val LightOnTertiary = Color.White -val LightOnTertiaryContainer = Color(0xFFF3C7FF) +val LightOnPrimaryContainer = Color(0xFF0C2246) +val LightOnSecondary = Color.White +val LightOnSecondaryContainer = Color(0xFF282A2E) val LightOnError = Color.White -val LightOnErrorContainer = Color(0xFF410002) +val LightOnErrorContainer = Color(0xFF710015) +val LightOnSuccess = Color.White +val LightOnSuccessContainer = Color(0xFF144C15) +val LightOnWarning = Color.White +val LightOnWarningContainer = Color(0xFF5A2E00) + val LightOutline = Color(0xFF747781) val LightOutlineVariant = Color(0xFFC3C6D1) val LightSurface = Color(0xFFFAF9FE) val LightSurfaceContainer = Color(0xFFEEEDF3) +val LightSurfaceContainerLowest = Color.White val LightSurfaceContainerLow = Color(0xFFF4F3F8) val LightSurfaceContainerHigh = Color(0xFFE8E7ED) val LightSurfaceContainerHighest = Color(0xFFE2E2E7) -val LightSurfaceVariant = Color(0xFFEEEDF3) +val LightSurfaceVariant = Color(0xFFE0E2ED) val LightOnSurface = Color(0xFF1A1C1F) val LightOnSurfaceVariant = Color(0xFF434750) val LightInversePrimary = Color(0xFFAAC7FF) val LightInverseSurface = Color(0xFF2F3034) -val LightInverseOnSurface = Color(0xFFF1F0F5) +val LightInverseOnSurface = Color(0xFFF4F3F8) + +// Dark +val DarkPrimary = Color(0xFFAAC7FF) +val DarkPrimaryContainer = Color(0xFF0F2C5A) +val DarkSecondary = Color(0xFFE0E2ED) +val DarkSecondaryContainer = Color(0xFF2F3034) +val DarkError = Color(0xFFFF5C79) +val DarkErrorContainer = Color(0xFF50000F) +val DarkSuccess = Color(0xFF74CE75) +val DarkSuccessContainer = Color(0xFF0C2E0C) +val DarkWarning = Color(0xFFFBAE38) +val DarkWarningContainer = Color(0xFF5A2E00) + +val DarkOnPrimary = Color(0xFF0C2246) +val DarkOnPrimaryContainer = Color(0xFFB5BFCF) +val DarkOnSecondary = Color(0xFF2F3034) +val DarkOnSecondaryContainer = Color(0xFFFAF9FE) +val DarkOnError = Color(0xFF34000A) +val DarkOnErrorContainer = Color(0xFFEFCCD2) +val DarkOnSuccess = Color(0xFF144C15) +val DarkOnSuccessContainer = Color(0xFF74CE75) +val DarkOnWarning = Color(0xFF5A2E00) +val DarkOnWarningContainer = Color(0xFFF2C174) -// dark -val DarkPrimary = Color(0xFFB1CBFF) -val DarkPrimaryContainer = Color(0xFF6F91CE) -val DarkSecondaryContainer = Color(0xFF313D54) -val DarkTertiary = Color(0xFFE8B4F8) -val DarkTertiaryContainer = Color(0xFF401750) -val DarkError = Color(0xFFFFB4AB) -val DarkErrorContainer = Color(0xFF93000A) -val DarkOnPrimary = Color(0xFF002F65) -val DarkOnPrimaryContainer = Color(0xFF95B6F5) -val DarkOnSecondaryContainer = Color(0xFFC4D1ED) -val DarkOnTertiary = Color(0xFF471E57) -val DarkOnTertiaryContainer = Color(0xFFD7A4E6) -val DarkOnError = Color(0xFF690005) -val DarkOnErrorContainer = Color(0xFFFFDAD6) val DarkOutline = Color(0xFF8D909B) val DarkOutlineVariant = Color(0xFF434750) val DarkSurface = Color(0xFF121317) val DarkSurfaceContainer = Color(0xFF1E2023) +val DarkSurfaceContainerLowest = Color(0xFF0D0E12) val DarkSurfaceContainerLow = Color(0xFF1A1C1F) val DarkSurfaceContainerHigh = Color(0xFF282A2E) val DarkSurfaceContainerHighest = Color(0xFF333539) -val DarkSurfaceVariant = Color(0xFF1E2023) +val DarkSurfaceVariant = Color(0xFF434750) val DarkOnSurface = Color(0xFFE2E2E7) val DarkOnSurfaceVariant = Color(0xFFC3C6D1) -val DarkInversePrimary = Color(0xFF3B5E97) +val DarkInversePrimary = Color(0xFF003168) val DarkInverseSurface = Color(0xFFE2E2E7) val DarkInverseOnSurface = Color(0xFF2F3034) -// general -val White = Color.White +// General val Transparent = Color(0x00FFFFFF) -val Black = Color(0xFF000000) + +data class ExtendedColorScheme( + val success: Color, + val successContainer: Color, + val onSuccess: Color, + val onSuccessContainer: Color, + val warning: Color, + val warningContainer: Color, + val onWarning: Color, + val onWarningContainer: Color, +) diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/theme/Theme.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/theme/Theme.kt index 075208bea..3493f5665 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/theme/Theme.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/theme/Theme.kt @@ -39,6 +39,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.SideEffect import androidx.compose.runtime.remember +import androidx.compose.runtime.staticCompositionLocalOf import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalContext @@ -53,33 +54,28 @@ val buttonRoundCornerShape = RoundedCornerShape(MCornerRadius) private val DarkColorScheme = darkColorScheme( primary = DarkPrimary, - onPrimary = DarkOnPrimary, primaryContainer = DarkPrimaryContainer, - onPrimaryContainer = DarkOnPrimaryContainer, secondary = DarkSecondaryContainer, - onSecondary = DarkOnSecondaryContainer, secondaryContainer = DarkSecondaryContainer, - onSecondaryContainer = DarkOnSecondaryContainer, - tertiary = DarkTertiary, - onTertiary = DarkOnTertiary, - tertiaryContainer = DarkTertiaryContainer, - onTertiaryContainer = DarkOnTertiaryContainer, error = DarkError, - onError = DarkOnError, errorContainer = DarkErrorContainer, + onPrimary = DarkOnPrimary, + onPrimaryContainer = DarkOnPrimaryContainer, + onSecondary = DarkOnSecondaryContainer, + onSecondaryContainer = DarkOnSecondaryContainer, + onError = DarkOnError, onErrorContainer = DarkOnErrorContainer, - background = Black, - onBackground = White, outline = DarkOutline, outlineVariant = DarkOutlineVariant, surface = DarkSurface, - surfaceVariant = DarkSurfaceVariant, - onSurface = DarkOnSurface, - onSurfaceVariant = DarkOnSurfaceVariant, surfaceContainer = DarkSurfaceContainer, + surfaceContainerLowest = DarkSurfaceContainerLowest, surfaceContainerLow = DarkSurfaceContainerLow, surfaceContainerHigh = DarkSurfaceContainerHigh, surfaceContainerHighest = DarkSurfaceContainerHighest, + surfaceVariant = DarkSurfaceVariant, + onSurface = DarkOnSurface, + onSurfaceVariant = DarkOnSurfaceVariant, inversePrimary = DarkInversePrimary, inverseSurface = DarkInverseSurface, inverseOnSurface = DarkInverseOnSurface, @@ -88,38 +84,65 @@ private val DarkColorScheme = private val LightColorScheme = lightColorScheme( primary = LightPrimary, - onPrimary = LightOnPrimary, primaryContainer = LightPrimaryContainer, - onPrimaryContainer = LightOnPrimaryContainer, secondary = LightSecondaryContainer, - onSecondary = LightOnSecondaryContainer, secondaryContainer = LightSecondaryContainer, - onSecondaryContainer = LightOnSecondaryContainer, - tertiary = LightTertiary, - onTertiary = LightOnTertiary, - tertiaryContainer = LightTertiaryContainer, - onTertiaryContainer = LightOnTertiaryContainer, error = LightError, - onError = LightOnError, errorContainer = LightErrorContainer, + onPrimary = LightOnPrimary, + onPrimaryContainer = LightOnPrimaryContainer, + onSecondary = LightOnSecondaryContainer, + onSecondaryContainer = LightOnSecondaryContainer, + onError = LightOnError, onErrorContainer = LightOnErrorContainer, - background = White, - onBackground = Black, outline = LightOutline, outlineVariant = LightOutlineVariant, surface = LightSurface, - surfaceVariant = LightSurfaceVariant, - onSurface = LightOnSurface, - onSurfaceVariant = LightOnSurfaceVariant, surfaceContainer = LightSurfaceContainer, + surfaceContainerLowest = LightSurfaceContainerLowest, surfaceContainerLow = LightSurfaceContainerLow, surfaceContainerHigh = LightSurfaceContainerHigh, surfaceContainerHighest = LightSurfaceContainerHighest, + surfaceVariant = LightSurfaceVariant, + onSurface = LightOnSurface, + onSurfaceVariant = LightOnSurfaceVariant, inversePrimary = LightInversePrimary, inverseSurface = LightInverseSurface, inverseOnSurface = LightInverseOnSurface, ) +private val DarkExtendedColors = + ExtendedColorScheme( + success = DarkSuccess, + successContainer = DarkSuccessContainer, + onSuccess = DarkOnSuccess, + onSuccessContainer = DarkOnSuccessContainer, + warning = DarkWarning, + warningContainer = DarkWarningContainer, + onWarning = DarkOnWarning, + onWarningContainer = DarkOnWarningContainer, + ) + +private val LightExtendedColors = + ExtendedColorScheme( + success = LightSuccess, + successContainer = LightSuccessContainer, + onSuccess = LightOnSuccess, + onSuccessContainer = LightOnSuccessContainer, + warning = LightWarning, + warningContainer = LightWarningContainer, + onWarning = LightOnWarning, + onWarningContainer = LightOnWarningContainer, + ) + +val LocalExtendedColorScheme = + staticCompositionLocalOf { + error("No ExtendedColorScheme provided") + } + +val MaterialTheme.extendedColorScheme: ExtendedColorScheme + @Composable get() = LocalExtendedColorScheme.current + @OptIn(ExperimentalLayoutApi::class) @Composable fun RIADigiDocTheme( @@ -154,6 +177,7 @@ fun RIADigiDocTheme( useDarkTheme -> DarkColorScheme else -> LightColorScheme } + val extendedColors = if (useDarkTheme) DarkExtendedColors else LightExtendedColors val view = LocalView.current if (!view.isInEditMode) { SideEffect { @@ -167,17 +191,19 @@ fun RIADigiDocTheme( } } - MaterialTheme( - colorScheme = colorScheme, - typography = getTypography(), - content = { - AccessibilityFocusProvider( - focusColor = accessibilityFocusColor, - alpha = accessibilityFocusAlpha, - content = content, - ) - }, - ) + CompositionLocalProvider(LocalExtendedColorScheme provides extendedColors) { + MaterialTheme( + colorScheme = colorScheme, + typography = getTypography(), + content = { + AccessibilityFocusProvider( + focusColor = accessibilityFocusColor, + alpha = accessibilityFocusAlpha, + content = content, + ) + }, + ) + } } @OptIn(ExperimentalMaterial3Api::class) diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/theme/Type.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/theme/Type.kt index 1bf54c688..bf7cbfff2 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/theme/Type.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/theme/Type.kt @@ -46,7 +46,6 @@ fun getTypography(): Typography { fontSize = 26.sp, fontWeight = FontWeight.Light, fontStyle = FontStyle.Normal, - color = OnPrimary, textAlign = TextAlign.Center, // Disable ligatures fontFeatureSettings = "'liga' off, 'clig' off", @@ -57,7 +56,6 @@ fun getTypography(): Typography { fontSize = 16.sp, fontWeight = FontWeight.Normal, fontStyle = FontStyle.Normal, - color = OnPrimary, textAlign = TextAlign.Center, // Disable ligatures fontFeatureSettings = "'liga' off, 'clig' off",