Merge pull request #4226 from element-hq/feature/bma/themeOverride

Theme override
This commit is contained in:
Benoit Marty 2025-02-06 16:48:16 +01:00 committed by GitHub
commit 98f793b02e
111 changed files with 293 additions and 275 deletions

View file

@ -14,7 +14,6 @@ import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -26,6 +25,7 @@ import androidx.lifecycle.repeatOnLifecycle
import com.bumble.appyx.core.integration.NodeHost import com.bumble.appyx.core.integration.NodeHost
import com.bumble.appyx.core.integrationpoint.NodeActivity import com.bumble.appyx.core.integrationpoint.NodeActivity
import com.bumble.appyx.core.plugin.NodeReadyObserver import com.bumble.appyx.core.plugin.NodeReadyObserver
import io.element.android.compound.theme.ElementTheme
import io.element.android.features.lockscreen.api.LockScreenEntryPoint import io.element.android.features.lockscreen.api.LockScreenEntryPoint
import io.element.android.features.lockscreen.api.LockScreenLockState import io.element.android.features.lockscreen.api.LockScreenLockState
import io.element.android.features.lockscreen.api.LockScreenService import io.element.android.features.lockscreen.api.LockScreenService
@ -61,7 +61,10 @@ class MainActivity : NodeActivity() {
@Composable @Composable
private fun MainContent(appBindings: AppBindings) { private fun MainContent(appBindings: AppBindings) {
val migrationState = appBindings.migrationEntryPoint().present() val migrationState = appBindings.migrationEntryPoint().present()
ElementThemeApp(appBindings.preferencesStore()) { ElementThemeApp(
appPreferencesStore = appBindings.preferencesStore(),
enterpriseService = appBindings.enterpriseService(),
) {
CompositionLocalProvider( CompositionLocalProvider(
LocalSnackbarDispatcher provides appBindings.snackbarDispatcher(), LocalSnackbarDispatcher provides appBindings.snackbarDispatcher(),
LocalUriHandler provides SafeUriHandler(this), LocalUriHandler provides SafeUriHandler(this),
@ -69,8 +72,8 @@ class MainActivity : NodeActivity() {
) { ) {
Box( Box(
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize()
.background(MaterialTheme.colorScheme.background), .background(ElementTheme.colors.bgCanvasDefault),
) { ) {
if (migrationState.migrationAction.isSuccess()) { if (migrationState.migrationAction.isSuccess()) {
MainNodeHost() MainNodeHost()

View file

@ -9,6 +9,7 @@ package io.element.android.x.di
import com.squareup.anvil.annotations.ContributesTo import com.squareup.anvil.annotations.ContributesTo
import io.element.android.features.api.MigrationEntryPoint import io.element.android.features.api.MigrationEntryPoint
import io.element.android.features.enterprise.api.EnterpriseService
import io.element.android.features.lockscreen.api.LockScreenEntryPoint import io.element.android.features.lockscreen.api.LockScreenEntryPoint
import io.element.android.features.lockscreen.api.LockScreenService import io.element.android.features.lockscreen.api.LockScreenService
import io.element.android.features.rageshake.api.reporter.BugReporter import io.element.android.features.rageshake.api.reporter.BugReporter
@ -35,4 +36,6 @@ interface AppBindings {
fun lockScreenEntryPoint(): LockScreenEntryPoint fun lockScreenEntryPoint(): LockScreenEntryPoint
fun analyticsService(): AnalyticsService fun analyticsService(): AnalyticsService
fun enterpriseService(): EnterpriseService
} }

@ -1 +1 @@
Subproject commit b4f0427e3595049d39846aabcdc06e818f2e96ea Subproject commit 0c028db8a48118433c7e11737080a6a01fb90f69

View file

@ -15,7 +15,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.layout.systemBarsPadding
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.BiasAlignment import androidx.compose.ui.BiasAlignment
@ -111,7 +110,7 @@ private fun AnalyticsOptInHeader(
.padding(8.dp), .padding(8.dp),
style = ElementTheme.typography.fontBodyMdRegular style = ElementTheme.typography.fontBodyMdRegular
.copy( .copy(
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
) )
) )

View file

@ -29,6 +29,7 @@ setupAnvil()
dependencies { dependencies {
implementation(projects.appconfig) implementation(projects.appconfig)
implementation(projects.features.enterprise.api)
implementation(projects.libraries.architecture) implementation(projects.libraries.architecture)
implementation(projects.libraries.core) implementation(projects.libraries.core)
implementation(projects.libraries.designsystem) implementation(projects.libraries.designsystem)

View file

@ -44,6 +44,7 @@ import io.element.android.features.call.impl.pip.PictureInPictureState
import io.element.android.features.call.impl.pip.PipView import io.element.android.features.call.impl.pip.PipView
import io.element.android.features.call.impl.services.CallForegroundService import io.element.android.features.call.impl.services.CallForegroundService
import io.element.android.features.call.impl.utils.CallIntentDataParser import io.element.android.features.call.impl.utils.CallIntentDataParser
import io.element.android.features.enterprise.api.EnterpriseService
import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.architecture.bindings import io.element.android.libraries.architecture.bindings
import io.element.android.libraries.core.log.logger.LoggerTag import io.element.android.libraries.core.log.logger.LoggerTag
@ -61,6 +62,7 @@ class ElementCallActivity :
@Inject lateinit var callIntentDataParser: CallIntentDataParser @Inject lateinit var callIntentDataParser: CallIntentDataParser
@Inject lateinit var presenterFactory: CallScreenPresenter.Factory @Inject lateinit var presenterFactory: CallScreenPresenter.Factory
@Inject lateinit var appPreferencesStore: AppPreferencesStore @Inject lateinit var appPreferencesStore: AppPreferencesStore
@Inject lateinit var enterpriseService: EnterpriseService
@Inject lateinit var pictureInPicturePresenter: PictureInPicturePresenter @Inject lateinit var pictureInPicturePresenter: PictureInPicturePresenter
private lateinit var presenter: Presenter<CallScreenState> private lateinit var presenter: Presenter<CallScreenState>
@ -109,7 +111,10 @@ class ElementCallActivity :
setContent { setContent {
val pipState = pictureInPicturePresenter.present() val pipState = pictureInPicturePresenter.present()
ListenToAndroidEvents(pipState) ListenToAndroidEvents(pipState)
ElementThemeApp(appPreferencesStore) { ElementThemeApp(
appPreferencesStore = appPreferencesStore,
enterpriseService = enterpriseService,
) {
val state = presenter.present() val state = presenter.present()
eventSink = state.eventSink eventSink = state.eventSink
LaunchedEffect(state.isCallActive, state.isInWidgetMode) { LaunchedEffect(state.isCallActive, state.isInWidgetMode) {

View file

@ -19,6 +19,7 @@ import io.element.android.features.call.impl.di.CallBindings
import io.element.android.features.call.impl.notifications.CallNotificationData import io.element.android.features.call.impl.notifications.CallNotificationData
import io.element.android.features.call.impl.utils.ActiveCallManager import io.element.android.features.call.impl.utils.ActiveCallManager
import io.element.android.features.call.impl.utils.CallState import io.element.android.features.call.impl.utils.CallState
import io.element.android.features.enterprise.api.EnterpriseService
import io.element.android.libraries.architecture.bindings import io.element.android.libraries.architecture.bindings
import io.element.android.libraries.designsystem.theme.ElementThemeApp import io.element.android.libraries.designsystem.theme.ElementThemeApp
import io.element.android.libraries.preferences.api.store.AppPreferencesStore import io.element.android.libraries.preferences.api.store.AppPreferencesStore
@ -47,6 +48,9 @@ class IncomingCallActivity : AppCompatActivity() {
@Inject @Inject
lateinit var appPreferencesStore: AppPreferencesStore lateinit var appPreferencesStore: AppPreferencesStore
@Inject
lateinit var enterpriseService: EnterpriseService
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -64,7 +68,10 @@ class IncomingCallActivity : AppCompatActivity() {
val notificationData = intent?.let { IntentCompat.getParcelableExtra(it, EXTRA_NOTIFICATION_DATA, CallNotificationData::class.java) } val notificationData = intent?.let { IntentCompat.getParcelableExtra(it, EXTRA_NOTIFICATION_DATA, CallNotificationData::class.java) }
if (notificationData != null) { if (notificationData != null) {
setContent { setContent {
ElementThemeApp(appPreferencesStore) { ElementThemeApp(
appPreferencesStore = appPreferencesStore,
enterpriseService = enterpriseService,
) {
IncomingCallScreen( IncomingCallScreen(
notificationData = notificationData, notificationData = notificationData,
onAnswer = ::onAnswer, onAnswer = ::onAnswer,

View file

@ -19,7 +19,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -211,7 +210,7 @@ private fun CreateRoomActionButton(
) { ) {
Icon( Icon(
modifier = Modifier.size(24.dp), modifier = Modifier.size(24.dp),
tint = MaterialTheme.colorScheme.secondary, tint = ElementTheme.colors.iconSecondary,
resourceId = iconRes, resourceId = iconRes,
contentDescription = null, contentDescription = null,
) )

View file

@ -13,6 +13,7 @@ android {
} }
dependencies { dependencies {
implementation(libs.compound)
implementation(projects.libraries.architecture) implementation(projects.libraries.architecture)
implementation(projects.libraries.matrix.api) implementation(projects.libraries.matrix.api)
} }

View file

@ -7,9 +7,13 @@
package io.element.android.features.enterprise.api package io.element.android.features.enterprise.api
import io.element.android.compound.tokens.generated.SemanticColors
import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.SessionId
interface EnterpriseService { interface EnterpriseService {
val isEnterpriseBuild: Boolean val isEnterpriseBuild: Boolean
suspend fun isEnterpriseUser(sessionId: SessionId): Boolean suspend fun isEnterpriseUser(sessionId: SessionId): Boolean
fun semanticColorsLight(): SemanticColors
fun semanticColorsDark(): SemanticColors
} }

View file

@ -17,6 +17,7 @@ android {
setupAnvil() setupAnvil()
dependencies { dependencies {
implementation(libs.compound)
implementation(projects.anvilannotations) implementation(projects.anvilannotations)
api(projects.features.enterprise.api) api(projects.features.enterprise.api)
implementation(projects.libraries.architecture) implementation(projects.libraries.architecture)

View file

@ -8,6 +8,9 @@
package io.element.android.features.enterprise.impl package io.element.android.features.enterprise.impl
import com.squareup.anvil.annotations.ContributesBinding import com.squareup.anvil.annotations.ContributesBinding
import io.element.android.compound.tokens.generated.SemanticColors
import io.element.android.compound.tokens.generated.compoundColorsDark
import io.element.android.compound.tokens.generated.compoundColorsLight
import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.enterprise.api.EnterpriseService
import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.AppScope
import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.SessionId
@ -18,4 +21,8 @@ class DefaultEnterpriseService @Inject constructor() : EnterpriseService {
override val isEnterpriseBuild = false override val isEnterpriseBuild = false
override suspend fun isEnterpriseUser(sessionId: SessionId) = false override suspend fun isEnterpriseUser(sessionId: SessionId) = false
override fun semanticColorsLight(): SemanticColors = compoundColorsLight
override fun semanticColorsDark(): SemanticColors = compoundColorsDark
} }

View file

@ -24,7 +24,6 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -308,7 +307,7 @@ private fun JoinRoomContent(
Text( Text(
text = stringResource(id = CommonStrings.error_unknown), text = stringResource(id = CommonStrings.error_unknown),
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
color = MaterialTheme.colorScheme.error, color = ElementTheme.colors.textCriticalPrimary,
) )
}, },
) )
@ -380,13 +379,13 @@ private fun DefaultLoadedContent(
text = stringResource(R.string.screen_join_room_space_not_supported_title), text = stringResource(R.string.screen_join_room_space_not_supported_title),
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
style = ElementTheme.typography.fontBodyLgMedium, style = ElementTheme.typography.fontBodyLgMedium,
color = MaterialTheme.colorScheme.primary, color = ElementTheme.colors.textPrimary,
) )
Text( Text(
text = stringResource(R.string.screen_join_room_space_not_supported_description, applicationName), text = stringResource(R.string.screen_join_room_space_not_supported_description, applicationName),
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
) )
} else if (contentState.joinAuthorisationStatus is JoinAuthorisationStatus.CanKnock) { } else if (contentState.joinAuthorisationStatus is JoinAuthorisationStatus.CanKnock) {
Spacer(modifier = Modifier.height(24.dp)) Spacer(modifier = Modifier.height(24.dp))

View file

@ -128,14 +128,14 @@ private fun KnockRequestsBannerContent(
Text( Text(
text = state.formattedTitle(), text = state.formattedTitle(),
style = ElementTheme.typography.fontBodyMdMedium, style = ElementTheme.typography.fontBodyMdMedium,
color = MaterialTheme.colorScheme.primary, color = ElementTheme.colors.textPrimary,
textAlign = TextAlign.Start, textAlign = TextAlign.Start,
) )
if (state.subtitle != null) { if (state.subtitle != null) {
Text( Text(
text = state.subtitle, text = state.subtitle,
style = ElementTheme.typography.fontBodySmRegular, style = ElementTheme.typography.fontBodySmRegular,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
textAlign = TextAlign.Start, textAlign = TextAlign.Start,
) )
} }

View file

@ -27,7 +27,6 @@ import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableIntStateOf
@ -331,7 +330,7 @@ private fun KnockRequestItem(
text = knockRequest.getBestName(), text = knockRequest.getBestName(),
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
color = MaterialTheme.colorScheme.primary, color = ElementTheme.colors.textPrimary,
style = ElementTheme.typography.fontBodyLgMedium, style = ElementTheme.typography.fontBodyLgMedium,
) )
val formattedDate = knockRequest.formattedDate val formattedDate = knockRequest.formattedDate
@ -339,7 +338,7 @@ private fun KnockRequestItem(
Spacer(modifier = Modifier.width(8.dp)) Spacer(modifier = Modifier.width(8.dp))
Text( Text(
text = formattedDate, text = formattedDate,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
style = ElementTheme.typography.fontBodySmRegular, style = ElementTheme.typography.fontBodySmRegular,
) )
} }
@ -348,7 +347,7 @@ private fun KnockRequestItem(
if (!knockRequest.displayName.isNullOrEmpty()) { if (!knockRequest.displayName.isNullOrEmpty()) {
Text( Text(
text = knockRequest.userId.value, text = knockRequest.userId.value,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,

View file

@ -21,6 +21,7 @@ setupAnvil()
dependencies { dependencies {
api(projects.features.lockscreen.api) api(projects.features.lockscreen.api)
implementation(projects.appconfig) implementation(projects.appconfig)
implementation(projects.features.enterprise.api)
implementation(projects.libraries.core) implementation(projects.libraries.core)
implementation(projects.libraries.architecture) implementation(projects.libraries.architecture)
implementation(projects.libraries.matrix.api) implementation(projects.libraries.matrix.api)

View file

@ -27,7 +27,6 @@ import androidx.compose.foundation.layout.systemBarsPadding
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Lock import androidx.compose.material.icons.filled.Lock
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
@ -316,7 +315,7 @@ private fun PinUnlockHeader(
.fillMaxWidth(), .fillMaxWidth(),
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
style = ElementTheme.typography.fontHeadingMdBold, style = ElementTheme.typography.fontHeadingMdBold,
color = MaterialTheme.colorScheme.primary, color = ElementTheme.colors.textPrimary,
) )
Spacer(Modifier.height(8.dp)) Spacer(Modifier.height(8.dp))
val remainingAttempts = state.remainingAttempts.dataOrNull() val remainingAttempts = state.remainingAttempts.dataOrNull()
@ -330,9 +329,9 @@ private fun PinUnlockHeader(
"" ""
} }
val subtitleColor = if (state.showWrongPinTitle) { val subtitleColor = if (state.showWrongPinTitle) {
MaterialTheme.colorScheme.error ElementTheme.colors.textCriticalPrimary
} else { } else {
MaterialTheme.colorScheme.secondary ElementTheme.colors.textSecondary
} }
Text( Text(
text = subtitle, text = subtitle,

View file

@ -16,6 +16,7 @@ import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import io.element.android.compound.theme.ElementTheme import io.element.android.compound.theme.ElementTheme
import io.element.android.features.enterprise.api.EnterpriseService
import io.element.android.features.lockscreen.api.LockScreenLockState import io.element.android.features.lockscreen.api.LockScreenLockState
import io.element.android.features.lockscreen.api.LockScreenService import io.element.android.features.lockscreen.api.LockScreenService
import io.element.android.features.lockscreen.impl.unlock.PinUnlockPresenter import io.element.android.features.lockscreen.impl.unlock.PinUnlockPresenter
@ -38,13 +39,17 @@ class PinUnlockActivity : AppCompatActivity() {
@Inject lateinit var presenter: PinUnlockPresenter @Inject lateinit var presenter: PinUnlockPresenter
@Inject lateinit var lockScreenService: LockScreenService @Inject lateinit var lockScreenService: LockScreenService
@Inject lateinit var appPreferencesStore: AppPreferencesStore @Inject lateinit var appPreferencesStore: AppPreferencesStore
@Inject lateinit var enterpriseService: EnterpriseService
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge() enableEdgeToEdge()
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
bindings<PinUnlockBindings>().inject(this) bindings<PinUnlockBindings>().inject(this)
setContent { setContent {
ElementThemeApp(appPreferencesStore) { ElementThemeApp(
appPreferencesStore = appPreferencesStore,
enterpriseService = enterpriseService,
) {
val state = presenter.present() val state = presenter.present()
val isDark = ElementTheme.isLightTheme.not() val isDark = ElementTheme.isLightTheme.not()
PinUnlockView( PinUnlockView(

View file

@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -68,7 +67,7 @@ fun AccountProviderView(
RoundedIconAtom( RoundedIconAtom(
size = RoundedIconAtomSize.Medium, size = RoundedIconAtomSize.Medium,
imageVector = CompoundIcons.Search(), imageVector = CompoundIcons.Search(),
tint = MaterialTheme.colorScheme.primary, tint = ElementTheme.colors.iconPrimary,
) )
} }
Text( Text(
@ -77,7 +76,7 @@ fun AccountProviderView(
.weight(1f), .weight(1f),
text = item.title, text = item.title,
style = ElementTheme.typography.fontBodyLgMedium, style = ElementTheme.typography.fontBodyLgMedium,
color = MaterialTheme.colorScheme.primary, color = ElementTheme.colors.textPrimary,
) )
if (item.isPublic) { if (item.isPublic) {
Icon( Icon(
@ -96,7 +95,7 @@ fun AccountProviderView(
.padding(start = 46.dp, bottom = 12.dp, end = 26.dp), .padding(start = 46.dp, bottom = 12.dp, end = 26.dp),
text = item.subtitle, text = item.subtitle,
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
) )
} }
} }

View file

@ -22,7 +22,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.progressSemantics import androidx.compose.foundation.progressSemantics
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
@ -138,7 +137,7 @@ private fun ColumnScope.Buttons(
) { ) {
Icon( Icon(
imageVector = CompoundIcons.Error(), imageVector = CompoundIcons.Error(),
tint = MaterialTheme.colorScheme.error, tint = ElementTheme.colors.iconCriticalPrimary,
contentDescription = null, contentDescription = null,
modifier = Modifier.size(24.dp) modifier = Modifier.size(24.dp)
) )
@ -151,7 +150,7 @@ private fun ColumnScope.Buttons(
else -> stringResource(R.string.screen_qr_code_login_invalid_scan_state_subtitle) else -> stringResource(R.string.screen_qr_code_login_invalid_scan_state_subtitle)
}, },
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
color = MaterialTheme.colorScheme.error, color = ElementTheme.colors.textCriticalPrimary,
style = ElementTheme.typography.fontBodySmMedium, style = ElementTheme.typography.fontBodySmMedium,
) )
} }

View file

@ -196,8 +196,8 @@ fun MessagesView(
MessagesViewContent( MessagesViewContent(
state = state, state = state,
modifier = Modifier modifier = Modifier
.padding(padding) .padding(padding)
.consumeWindowInsets(padding), .consumeWindowInsets(padding),
onContentClick = ::onContentClick, onContentClick = ::onContentClick,
onMessageLongClick = ::onMessageLongClick, onMessageLongClick = ::onMessageLongClick,
onUserDataClick = { hidingKeyboard { onUserDataClick(it) } }, onUserDataClick = { hidingKeyboard { onUserDataClick(it) } },
@ -290,9 +290,9 @@ private fun MessagesViewContent(
) { ) {
Box( Box(
modifier = modifier modifier = modifier
.fillMaxSize() .fillMaxSize()
.navigationBarsPadding() .navigationBarsPadding()
.imePadding(), .imePadding(),
) { ) {
AttachmentsBottomSheet( AttachmentsBottomSheet(
state = state.composerState, state = state.composerState,
@ -402,13 +402,13 @@ private fun MessagesViewComposerBottomSheetContents(
Column(modifier = Modifier.fillMaxWidth()) { Column(modifier = Modifier.fillMaxWidth()) {
SuggestionsPickerView( SuggestionsPickerView(
modifier = Modifier modifier = Modifier
.heightIn(max = 230.dp) .heightIn(max = 230.dp)
// Consume all scrolling, preventing the bottom sheet from being dragged when interacting with the list of suggestions // Consume all scrolling, preventing the bottom sheet from being dragged when interacting with the list of suggestions
.nestedScroll(object : NestedScrollConnection { .nestedScroll(object : NestedScrollConnection {
override fun onPostScroll(consumed: Offset, available: Offset, source: NestedScrollSource): Offset { override fun onPostScroll(consumed: Offset, available: Offset, source: NestedScrollSource): Offset {
return available return available
} }
}), }),
roomId = state.roomId, roomId = state.roomId,
roomName = state.roomName.dataOrNull(), roomName = state.roomName.dataOrNull(),
roomAvatarData = state.roomAvatar.dataOrNull(), roomAvatarData = state.roomAvatar.dataOrNull(),
@ -456,8 +456,8 @@ private fun MessagesViewTopBar(
title = { title = {
val roundedCornerShape = RoundedCornerShape(8.dp) val roundedCornerShape = RoundedCornerShape(8.dp)
val titleModifier = Modifier val titleModifier = Modifier
.clip(roundedCornerShape) .clip(roundedCornerShape)
.clickable { onRoomDetailsClick() } .clickable { onRoomDetailsClick() }
if (roomName != null && roomAvatar != null) { if (roomName != null && roomAvatar != null) {
RoomAvatarAndNameRow( RoomAvatarAndNameRow(
roomName = roomName, roomName = roomName,
@ -512,15 +512,15 @@ private fun RoomAvatarAndNameRow(
private fun CantSendMessageBanner() { private fun CantSendMessageBanner() {
Row( Row(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.background(MaterialTheme.colorScheme.secondary) .background(ElementTheme.colors.bgSubtleSecondary)
.padding(16.dp), .padding(16.dp),
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.Center horizontalArrangement = Arrangement.Center
) { ) {
Text( Text(
text = stringResource(id = R.string.screen_room_timeline_no_permission_to_post), text = stringResource(id = R.string.screen_room_timeline_no_permission_to_post),
color = MaterialTheme.colorScheme.onSecondary, color = ElementTheme.colors.textSecondary,
style = MaterialTheme.typography.bodyMedium, style = MaterialTheme.typography.bodyMedium,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
fontStyle = FontStyle.Italic, fontStyle = FontStyle.Italic,

View file

@ -27,7 +27,6 @@ import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ListItemDefaults import androidx.compose.material3.ListItemDefaults
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.material3.ripple import androidx.compose.material3.ripple
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@ -253,7 +252,7 @@ private fun MessageSummary(
) { ) {
val content: @Composable () -> Unit val content: @Composable () -> Unit
val icon: @Composable () -> Unit = { Avatar(avatarData = event.senderAvatar.copy(size = AvatarSize.MessageActionSender)) } val icon: @Composable () -> Unit = { Avatar(avatarData = event.senderAvatar.copy(size = AvatarSize.MessageActionSender)) }
val contentStyle = ElementTheme.typography.fontBodyMdRegular.copy(color = MaterialTheme.colorScheme.secondary) val contentStyle = ElementTheme.typography.fontBodyMdRegular.copy(color = ElementTheme.colors.textSecondary)
@Composable @Composable
fun ContentForBody(body: String) { fun ContentForBody(body: String) {
@ -316,7 +315,7 @@ private fun MessageSummary(
Text( Text(
text = sentTimeFull, text = sentTimeFull,
style = ElementTheme.typography.fontBodyXsRegular, style = ElementTheme.typography.fontBodyXsRegular,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
textAlign = TextAlign.End, textAlign = TextAlign.End,
) )
} }
@ -358,7 +357,7 @@ private fun EmojiReactionsRow(
Icon( Icon(
imageVector = CompoundIcons.ReactionAdd(), imageVector = CompoundIcons.ReactionAdd(),
contentDescription = stringResource(id = CommonStrings.a11y_react_with_other_emojis), contentDescription = stringResource(id = CommonStrings.a11y_react_with_other_emojis),
tint = MaterialTheme.colorScheme.secondary, tint = ElementTheme.colors.iconSecondary,
modifier = Modifier modifier = Modifier
.size(24.dp) .size(24.dp)
.clickable( .clickable(

View file

@ -108,7 +108,7 @@ private fun PinnedMessagesBannerRow(
Icon( Icon(
imageVector = CompoundIcons.PinSolid(), imageVector = CompoundIcons.PinSolid(),
contentDescription = null, contentDescription = null,
tint = ElementTheme.materialColors.secondary, tint = ElementTheme.colors.iconSecondary,
modifier = Modifier modifier = Modifier
.padding(horizontal = 10.dp) .padding(horizontal = 10.dp)
.size(20.dp) .size(20.dp)

View file

@ -21,7 +21,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Switch import androidx.compose.material3.Switch
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -113,7 +112,7 @@ fun ReportMessageView(
Text( Text(
text = stringResource(R.string.screen_report_content_block_user_hint), text = stringResource(R.string.screen_report_content_block_user_hint),
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
) )
} }
Switch( Switch(

View file

@ -23,7 +23,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.shape.CornerSize import androidx.compose.foundation.shape.CornerSize
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@ -76,7 +75,7 @@ fun MessagesReactionButton(
.background(Color.Transparent) .background(Color.Transparent)
// Outer border, same colour as background // Outer border, same colour as background
.border( .border(
BorderStroke(2.dp, MaterialTheme.colorScheme.background), BorderStroke(2.dp, ElementTheme.colors.bgCanvasDefault),
shape = RoundedCornerShape(corner = CornerSize(14.dp)) shape = RoundedCornerShape(corner = CornerSize(14.dp))
) )
.padding(vertical = 2.dp, horizontal = 2.dp) .padding(vertical = 2.dp, horizontal = 2.dp)
@ -122,7 +121,7 @@ private fun TextContent(
.height(REACTION_EMOJI_LINE_HEIGHT.toDp()), .height(REACTION_EMOJI_LINE_HEIGHT.toDp()),
text = text, text = text,
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
color = ElementTheme.materialColors.primary color = ElementTheme.colors.textPrimary
) )
@Composable @Composable
@ -131,7 +130,7 @@ private fun IconContent(
) = Icon( ) = Icon(
resourceId = resourceId, resourceId = resourceId,
contentDescription = stringResource(id = R.string.screen_room_timeline_add_reaction), contentDescription = stringResource(id = R.string.screen_room_timeline_add_reaction),
tint = ElementTheme.materialColors.secondary, tint = ElementTheme.colors.iconSecondary,
modifier = Modifier modifier = Modifier
.size(ADD_EMOJI_SIZE) .size(ADD_EMOJI_SIZE)
) )
@ -164,7 +163,7 @@ private fun ReactionContent(
Spacer(modifier = Modifier.width(4.dp)) Spacer(modifier = Modifier.width(4.dp))
Text( Text(
text = reaction.count.toString(), text = reaction.count.toString(),
color = if (reaction.isHighlighted) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.secondary, color = if (reaction.isHighlighted) ElementTheme.colors.textPrimary else ElementTheme.colors.textSecondary,
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
) )
} }

View file

@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -45,7 +44,7 @@ fun TimelineEventTimestampView(
val hasError = event.localSendState is LocalEventSendState.Failed val hasError = event.localSendState is LocalEventSendState.Failed
val hasEncryptionCritical = event.messageShield?.isCritical.orFalse() val hasEncryptionCritical = event.messageShield?.isCritical.orFalse()
val isMessageEdited = event.content.isEdited() val isMessageEdited = event.content.isEdited()
val tint = if (hasError || hasEncryptionCritical) MaterialTheme.colorScheme.error else MaterialTheme.colorScheme.secondary val tint = if (hasError || hasEncryptionCritical) ElementTheme.colors.textCriticalPrimary else ElementTheme.colors.textSecondary
Row( Row(
modifier = Modifier modifier = Modifier
.padding(PaddingValues(start = TimelineEventTimestampViewDefaults.spacing)) .padding(PaddingValues(start = TimelineEventTimestampViewDefaults.spacing))

View file

@ -169,7 +169,7 @@ private fun Modifier.focusedEvent(
val highlightedLineColor = ElementTheme.colors.textActionAccent val highlightedLineColor = ElementTheme.colors.textActionAccent
val gradientColors = listOf( val gradientColors = listOf(
ElementTheme.colors.highlightedMessageBackgroundColor, ElementTheme.colors.highlightedMessageBackgroundColor,
ElementTheme.materialColors.background ElementTheme.colors.bgCanvasDefault,
) )
val verticalOffset = focusedEventOffset.toPx() val verticalOffset = focusedEventOffset.toPx()
val verticalRatio = 0.7f val verticalRatio = 0.7f

View file

@ -77,7 +77,7 @@ private fun TimelineItemAttachmentHeaderView(
modifier = Modifier modifier = Modifier
.size(iconSize) .size(iconSize)
.clip(CircleShape) .clip(CircleShape)
.background(ElementTheme.materialColors.background), .background(ElementTheme.colors.bgCanvasDefault),
contentAlignment = Alignment.Center, contentAlignment = Alignment.Center,
) { ) {
icon() icon()
@ -86,14 +86,14 @@ private fun TimelineItemAttachmentHeaderView(
Column { Column {
Text( Text(
text = filename, text = filename,
color = ElementTheme.materialColors.primary, color = ElementTheme.colors.textPrimary,
maxLines = 2, maxLines = 2,
style = ElementTheme.typography.fontBodyLgRegular, style = ElementTheme.typography.fontBodyLgRegular,
overflow = TextOverflow.Ellipsis overflow = TextOverflow.Ellipsis
) )
Text( Text(
text = fileExtensionAndSize, text = fileExtensionAndSize,
color = ElementTheme.materialColors.secondary, color = ElementTheme.colors.textSecondary,
style = ElementTheme.typography.fontBodySmRegular, style = ElementTheme.typography.fontBodySmRegular,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
@ -119,7 +119,7 @@ private fun TimelineItemAttachmentCaptionView(
Text( Text(
modifier = modifier, modifier = modifier,
text = caption, text = caption,
color = ElementTheme.materialColors.primary, color = ElementTheme.colors.textPrimary,
style = ElementTheme.typography.fontBodyLgRegular, style = ElementTheme.typography.fontBodyLgRegular,
onTextLayout = ContentAvoidingLayout.measureLastTextLine( onTextLayout = ContentAvoidingLayout.measureLastTextLine(
onContentLayoutChange = onContentLayoutChange, onContentLayoutChange = onContentLayoutChange,

View file

@ -38,7 +38,7 @@ fun TimelineItemAudioView(
Icon( Icon(
imageVector = Icons.Outlined.GraphicEq, imageVector = Icons.Outlined.GraphicEq,
contentDescription = null, contentDescription = null,
tint = ElementTheme.materialColors.primary, tint = ElementTheme.colors.iconPrimary,
modifier = Modifier modifier = Modifier
.size(16.dp), .size(16.dp),
) )

View file

@ -38,7 +38,7 @@ fun TimelineItemFileView(
Icon( Icon(
resourceId = CompoundDrawables.ic_compound_attachment, resourceId = CompoundDrawables.ic_compound_attachment,
contentDescription = null, contentDescription = null,
tint = ElementTheme.materialColors.primary, tint = ElementTheme.colors.iconPrimary,
modifier = Modifier modifier = Modifier
.size(16.dp) .size(16.dp)
.rotate(-45f), .rotate(-45f),

View file

@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -53,7 +52,7 @@ fun TimelineItemInformativeView(
) { ) {
Icon( Icon(
resourceId = iconResourceId, resourceId = iconResourceId,
tint = MaterialTheme.colorScheme.secondary, tint = ElementTheme.colors.iconSecondary,
contentDescription = iconDescription, contentDescription = iconDescription,
modifier = Modifier.size(16.dp) modifier = Modifier.size(16.dp)
) )
@ -61,7 +60,7 @@ fun TimelineItemInformativeView(
Spacer(modifier = Modifier.width(4.dp)) Spacer(modifier = Modifier.width(4.dp))
Text( Text(
fontStyle = FontStyle.Italic, fontStyle = FontStyle.Italic,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
text = text text = text
) )

View file

@ -7,7 +7,6 @@
package io.element.android.features.messages.impl.timeline.components.event package io.element.android.features.messages.impl.timeline.components.event
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
@ -25,7 +24,7 @@ fun TimelineItemStateView(
) { ) {
Text( Text(
modifier = modifier, modifier = modifier,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
text = content.body, text = content.body,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,

View file

@ -91,7 +91,7 @@ fun TimelineItemVoiceView(
Spacer(Modifier.width(8.dp)) Spacer(Modifier.width(8.dp))
Text( Text(
text = state.time, text = state.time,
color = ElementTheme.materialColors.secondary, color = ElementTheme.colors.textSecondary,
style = ElementTheme.typography.fontBodySmMedium, style = ElementTheme.typography.fontBodySmMedium,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,

View file

@ -17,7 +17,6 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@ -67,7 +66,7 @@ fun GroupHeaderView(
) { ) {
Text( Text(
text = text, text = text,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
) )
val rotation: Float by animateFloatAsState( val rotation: Float by animateFloatAsState(
@ -82,7 +81,7 @@ fun GroupHeaderView(
modifier = Modifier.rotate(rotation), modifier = Modifier.rotate(rotation),
imageVector = CompoundIcons.ChevronRight(), imageVector = CompoundIcons.ChevronRight(),
contentDescription = null, contentDescription = null,
tint = MaterialTheme.colorScheme.secondary tint = ElementTheme.colors.iconSecondary
) )
} }
} }

View file

@ -172,7 +172,7 @@ private fun AggregatedReactionButton(
val textColor = if (isHighlighted) { val textColor = if (isHighlighted) {
MaterialTheme.colorScheme.inversePrimary MaterialTheme.colorScheme.inversePrimary
} else { } else {
MaterialTheme.colorScheme.primary ElementTheme.colors.textPrimary
} }
val roundedCornerShape = RoundedCornerShape(corner = CornerSize(percent = 50)) val roundedCornerShape = RoundedCornerShape(corner = CornerSize(percent = 50))
@ -250,12 +250,12 @@ private fun SenderRow(
text = name, text = name,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
color = MaterialTheme.colorScheme.primary, color = ElementTheme.colors.textPrimary,
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
) )
Text( Text(
text = sentTime, text = sentTime,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
style = ElementTheme.typography.fontBodySmRegular, style = ElementTheme.typography.fontBodySmRegular,
@ -263,7 +263,7 @@ private fun SenderRow(
} }
Text( Text(
text = userId, text = userId,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
style = ElementTheme.typography.fontBodySmRegular, style = ElementTheme.typography.fontBodySmRegular,

View file

@ -18,7 +18,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -131,7 +130,7 @@ private fun ReadReceiptsAvatars(
) { ) {
val avatarSize = AvatarSize.TimelineReadReceipt.dp val avatarSize = AvatarSize.TimelineReadReceipt.dp
val avatarStrokeSize = 1.dp val avatarStrokeSize = 1.dp
val avatarStrokeColor = MaterialTheme.colorScheme.background val avatarStrokeColor = ElementTheme.colors.bgCanvasDefault
val receiptDescription = computeReceiptDescription(receipts) val receiptDescription = computeReceiptDescription(receipts)
Row( Row(
modifier = modifier modifier = modifier

View file

@ -11,7 +11,6 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -39,7 +38,7 @@ internal fun TimelineItemDaySeparatorView(
Text( Text(
text = model.formattedDate, text = model.formattedDate,
style = ElementTheme.typography.fontBodyMdMedium, style = ElementTheme.typography.fontBodyMdMedium,
color = MaterialTheme.colorScheme.primary, color = ElementTheme.colors.textPrimary,
) )
} }
} }

View file

@ -11,7 +11,6 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -41,7 +40,7 @@ fun TimelineItemRoomBeginningView(
stringResource(id = R.string.screen_room_timeline_beginning_of_room, roomName) stringResource(id = R.string.screen_room_timeline_beginning_of_room, roomName)
} }
Text( Text(
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
text = text, text = text,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,

View file

@ -16,7 +16,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -25,6 +24,8 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import io.element.android.compound.theme.ElementTheme import io.element.android.compound.theme.ElementTheme
import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.compound.tokens.generated.CompoundIcons
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.text.toDp import io.element.android.libraries.designsystem.text.toDp
import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.Icon
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
@ -37,24 +38,29 @@ internal fun Indicator(
Row( Row(
modifier modifier
.fillMaxWidth() .fillMaxWidth()
.background(MaterialTheme.colorScheme.secondaryContainer) .background(ElementTheme.colors.bgSubtlePrimary)
.statusBarsPadding() .statusBarsPadding()
.padding(vertical = 6.dp), .padding(vertical = 6.dp),
horizontalArrangement = Arrangement.Center, horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
val tint = MaterialTheme.colorScheme.primary
Icon( Icon(
imageVector = CompoundIcons.Offline(), imageVector = CompoundIcons.Offline(),
contentDescription = null, contentDescription = null,
tint = tint, tint = ElementTheme.colors.iconPrimary,
modifier = Modifier.size(16.sp.toDp()), modifier = Modifier.size(16.sp.toDp()),
) )
Spacer(modifier = Modifier.width(8.dp)) Spacer(modifier = Modifier.width(8.dp))
Text( Text(
text = stringResource(CommonStrings.common_offline), text = stringResource(CommonStrings.common_offline),
style = ElementTheme.typography.fontBodyMdMedium, style = ElementTheme.typography.fontBodyMdMedium,
color = tint, color = ElementTheme.colors.textPrimary,
) )
} }
} }
@PreviewsDayNight
@Composable
internal fun IndicatorPreview() = ElementPreview {
Indicator()
}

View file

@ -103,14 +103,14 @@ private fun OnBoardingContent(state: OnBoardingState) {
) { ) {
Text( Text(
text = stringResource(id = R.string.screen_onboarding_welcome_title), text = stringResource(id = R.string.screen_onboarding_welcome_title),
color = ElementTheme.materialColors.primary, color = ElementTheme.colors.textPrimary,
style = ElementTheme.typography.fontHeadingLgBold, style = ElementTheme.typography.fontHeadingLgBold,
textAlign = TextAlign.Center textAlign = TextAlign.Center
) )
Spacer(modifier = Modifier.height(8.dp)) Spacer(modifier = Modifier.height(8.dp))
Text( Text(
text = stringResource(id = R.string.screen_onboarding_welcome_message, state.productionApplicationName), text = stringResource(id = R.string.screen_onboarding_welcome_message, state.productionApplicationName),
color = ElementTheme.materialColors.secondary, color = ElementTheme.colors.textSecondary,
style = ElementTheme.typography.fontBodyLgRegular.copy(fontSize = 17.sp), style = ElementTheme.typography.fontBodyLgRegular.copy(fontSize = 17.sp),
textAlign = TextAlign.Center textAlign = TextAlign.Center
) )

View file

@ -24,7 +24,6 @@ import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.SingleChoiceSegmentedButtonRow import androidx.compose.material3.SingleChoiceSegmentedButtonRow
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
@ -236,7 +235,7 @@ private fun PollHistoryItemRow(
Column(modifier = Modifier.padding(16.dp)) { Column(modifier = Modifier.padding(16.dp)) {
Text( Text(
text = pollHistoryItem.formattedDate, text = pollHistoryItem.formattedDate,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
style = ElementTheme.typography.fontBodySmRegular, style = ElementTheme.typography.fontBodySmRegular,
) )
Spacer(modifier = Modifier.height(4.dp)) Spacer(modifier = Modifier.height(4.dp))

View file

@ -262,7 +262,7 @@ private fun ColumnScope.Footer(
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
text = text, text = text,
style = ElementTheme.typography.fontBodySmRegular, style = ElementTheme.typography.fontBodySmRegular,
color = ElementTheme.materialColors.secondary, color = ElementTheme.colors.textSecondary,
) )
} }

View file

@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
@ -25,6 +24,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.compound.theme.ElementTheme
import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.AsyncData
import io.element.android.libraries.designsystem.atomic.atoms.PlaceholderAtom import io.element.android.libraries.designsystem.atomic.atoms.PlaceholderAtom
import io.element.android.libraries.designsystem.atomic.atoms.RoomPreviewTitleAtom import io.element.android.libraries.designsystem.atomic.atoms.RoomPreviewTitleAtom
@ -127,7 +127,7 @@ private fun RoomAliasResolverContent(
Text( Text(
text = stringResource(id = R.string.screen_room_alias_resolver_resolve_alias_failure), text = stringResource(id = R.string.screen_room_alias_resolver_resolve_alias_failure),
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
color = MaterialTheme.colorScheme.error, color = ElementTheme.colors.textCriticalPrimary,
) )
} }
}, },

View file

@ -424,7 +424,7 @@ private fun TitleAndSubtitle(
Text( Text(
text = subtitle, text = subtitle,
style = ElementTheme.typography.fontBodyLgRegular, style = ElementTheme.typography.fontBodyLgRegular,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
) )
} }

View file

@ -26,7 +26,6 @@ import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.SingleChoiceSegmentedButtonRow import androidx.compose.material3.SingleChoiceSegmentedButtonRow
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.SideEffect import androidx.compose.runtime.SideEffect
@ -278,7 +277,7 @@ private fun LazyListScope.roomMemberListSection(
modifier = Modifier.padding(horizontal = 16.dp, vertical = 12.dp), modifier = Modifier.padding(horizontal = 16.dp, vertical = 12.dp),
text = it(), text = it(),
style = ElementTheme.typography.fontBodyLgRegular, style = ElementTheme.typography.fontBodyLgRegular,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
) )
} }
} }

View file

@ -13,7 +13,6 @@ import androidx.compose.foundation.layout.consumeWindowInsets
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
@ -111,7 +110,7 @@ private fun RoomSpecificNotificationSettingsView(
.padding(start = 16.dp, bottom = 16.dp, end = 16.dp), .padding(start = 16.dp, bottom = 16.dp, end = 16.dp),
style = ElementTheme.typography.fontBodyMdRegular style = ElementTheme.typography.fontBodyMdRegular
.copy( .copy(
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
) )
) )
if (state.defaultRoomNotificationMode != null) { if (state.defaultRoomNotificationMode != null) {

View file

@ -29,7 +29,6 @@ import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
@ -356,7 +355,7 @@ private fun MemberRow(
text = name, text = name,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
color = MaterialTheme.colorScheme.primary, color = ElementTheme.colors.textPrimary,
style = ElementTheme.typography.fontBodyLgRegular, style = ElementTheme.typography.fontBodyLgRegular,
) )
// Invitation pending marker // Invitation pending marker
@ -365,7 +364,7 @@ private fun MemberRow(
modifier = Modifier.padding(start = 8.dp), modifier = Modifier.padding(start = 8.dp),
text = stringResource(id = R.string.screen_room_member_list_pending_header_title), text = stringResource(id = R.string.screen_room_member_list_pending_header_title),
style = ElementTheme.typography.fontBodySmRegular.copy(fontStyle = FontStyle.Italic), style = ElementTheme.typography.fontBodySmRegular.copy(fontStyle = FontStyle.Italic),
color = MaterialTheme.colorScheme.secondary color = ElementTheme.colors.textSecondary
) )
} }
} }
@ -373,7 +372,7 @@ private fun MemberRow(
userId?.let { userId?.let {
Text( Text(
text = userId, text = userId,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
style = ElementTheme.typography.fontBodySmRegular, style = ElementTheme.typography.fontBodySmRegular,

View file

@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.rememberTopAppBarState import androidx.compose.material3.rememberTopAppBarState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@ -22,6 +21,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import io.element.android.compound.theme.ElementTheme
import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.compound.tokens.generated.CompoundIcons
import io.element.android.features.leaveroom.api.LeaveRoomView import io.element.android.features.leaveroom.api.LeaveRoomView
import io.element.android.features.networkmonitor.api.ui.ConnectivityIndicatorContainer import io.element.android.features.networkmonitor.api.ui.ConnectivityIndicatorContainer
@ -90,7 +90,7 @@ fun RoomListView(
.statusBarsPadding() .statusBarsPadding()
.padding(top = topPadding) .padding(top = topPadding)
.fillMaxSize() .fillMaxSize()
.background(MaterialTheme.colorScheme.background) .background(ElementTheme.colors.bgCanvasDefault)
) )
acceptDeclineInviteView() acceptDeclineInviteView()
} }
@ -152,14 +152,14 @@ private fun RoomListScaffold(
floatingActionButton = { floatingActionButton = {
if (state.displayActions) { if (state.displayActions) {
FloatingActionButton( FloatingActionButton(
// FIXME align on Design system theme containerColor = ElementTheme.colors.iconPrimary,
containerColor = MaterialTheme.colorScheme.primary,
onClick = onCreateRoomClick onClick = onCreateRoomClick
) { ) {
Icon( Icon(
// Note cannot use Icons.Outlined.EditSquare, it does not exist :/ // Note cannot use Icons.Outlined.EditSquare, it does not exist :/
imageVector = CompoundIcons.Compose(), imageVector = CompoundIcons.Compose(),
contentDescription = stringResource(id = R.string.screen_roomlist_a11y_create_message) contentDescription = stringResource(id = R.string.screen_roomlist_a11y_create_message),
tint = ElementTheme.colors.iconOnSolidPrimary,
) )
} }
} }

View file

@ -162,7 +162,7 @@ private fun DefaultRoomListTopBar(
// Workaround to display a very subtle bloom for avatars with very soft colors // Workaround to display a very subtle bloom for avatars with very soft colors
Color(0xFFF9F9F9) Color(0xFFF9F9F9)
} else { } else {
ElementTheme.materialColors.background ElementTheme.colors.bgCanvasDefault
}, },
blurSize = DpSize(avatarBloomSize, avatarBloomSize), blurSize = DpSize(avatarBloomSize, avatarBloomSize),
offset = DpOffset(24.dp, 24.dp + statusBarPadding), offset = DpOffset(24.dp, 24.dp + statusBarPadding),
@ -174,7 +174,7 @@ private fun DefaultRoomListTopBar(
} else { } else {
DpSize.Unspecified DpSize.Unspecified
}, },
bottomSoftEdgeColor = ElementTheme.materialColors.background, bottomSoftEdgeColor = ElementTheme.colors.bgCanvasDefault,
bottomSoftEdgeAlpha = if (displayFilters) { bottomSoftEdgeAlpha = if (displayFilters) {
1f 1f
} else { } else {
@ -233,7 +233,7 @@ private fun DefaultRoomListTopBar(
leadingIcon = { leadingIcon = {
Icon( Icon(
imageVector = CompoundIcons.ShareAndroid(), imageVector = CompoundIcons.ShareAndroid(),
tint = ElementTheme.materialColors.secondary, tint = ElementTheme.colors.iconSecondary,
contentDescription = null, contentDescription = null,
) )
} }
@ -249,7 +249,7 @@ private fun DefaultRoomListTopBar(
leadingIcon = { leadingIcon = {
Icon( Icon(
imageVector = CompoundIcons.ChatProblem(), imageVector = CompoundIcons.ChatProblem(),
tint = ElementTheme.materialColors.secondary, tint = ElementTheme.colors.iconSecondary,
contentDescription = null, contentDescription = null,
) )
} }

View file

@ -24,7 +24,6 @@ import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ripple import androidx.compose.material3.ripple
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
@ -212,7 +211,7 @@ private fun NameAndTimestampRow(
style = ElementTheme.typography.fontBodyLgMedium, style = ElementTheme.typography.fontBodyLgMedium,
text = name ?: stringResource(id = CommonStrings.common_no_room_name), text = name ?: stringResource(id = CommonStrings.common_no_room_name),
fontStyle = FontStyle.Italic.takeIf { name == null }, fontStyle = FontStyle.Italic.takeIf { name == null },
color = MaterialTheme.roomListRoomName(), color = ElementTheme.roomListRoomName(),
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis overflow = TextOverflow.Ellipsis
) )
@ -223,7 +222,7 @@ private fun NameAndTimestampRow(
color = if (isHighlighted) { color = if (isHighlighted) {
ElementTheme.colors.unreadIndicator ElementTheme.colors.unreadIndicator
} else { } else {
MaterialTheme.roomListRoomMessageDate() ElementTheme.roomListRoomMessageDate()
}, },
) )
} }
@ -247,7 +246,7 @@ private fun InviteSubtitle(
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
color = MaterialTheme.roomListRoomMessage(), color = ElementTheme.roomListRoomMessage(),
modifier = modifier, modifier = modifier,
) )
} }
@ -268,7 +267,7 @@ private fun LastMessageAndIndicatorRow(
Text( Text(
modifier = Modifier.weight(1f), modifier = Modifier.weight(1f),
text = attributedLastMessage, text = attributedLastMessage,
color = MaterialTheme.roomListRoomMessage(), color = ElementTheme.roomListRoomMessage(),
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
minLines = 2, minLines = 2,
maxLines = 2, maxLines = 2,
@ -315,7 +314,7 @@ private fun InviteNameAndIndicatorRow(
style = ElementTheme.typography.fontBodyLgMedium, style = ElementTheme.typography.fontBodyLgMedium,
text = name ?: stringResource(id = CommonStrings.common_no_room_name), text = name ?: stringResource(id = CommonStrings.common_no_room_name),
fontStyle = FontStyle.Italic.takeIf { name == null }, fontStyle = FontStyle.Italic.takeIf { name == null },
color = MaterialTheme.roomListRoomName(), color = ElementTheme.roomListRoomName(),
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis overflow = TextOverflow.Ellipsis
) )

View file

@ -13,7 +13,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -72,7 +71,7 @@ fun UserProfileHeaderSection(
Text( Text(
text = userId.value, text = userId.value,
style = ElementTheme.typography.fontBodyLgRegular, style = ElementTheme.typography.fontBodyLgRegular,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
) )
if (isUserVerified.dataOrNull() == true) { if (isUserVerified.dataOrNull() == true) {

View file

@ -18,7 +18,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.layout.widthIn
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -49,7 +48,7 @@ internal fun VerificationContentVerifying(
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
text = text, text = text,
style = ElementTheme.typography.fontHeadingLgBold, style = ElementTheme.typography.fontHeadingLgBold,
color = MaterialTheme.colorScheme.primary, color = ElementTheme.colors.textPrimary,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
) )
} }
@ -86,7 +85,7 @@ private fun EmojiItemView(emoji: VerificationEmoji, modifier: Modifier = Modifie
Text( Text(
text = stringResource(id = emojiResource.nameRes), text = stringResource(id = emojiResource.nameRes),
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
) )

View file

@ -31,6 +31,7 @@ android {
implementation(libs.androidx.compose.material3.adaptive) implementation(libs.androidx.compose.material3.adaptive)
implementation(libs.coil.compose) implementation(libs.coil.compose)
implementation(libs.vanniktech.blurhash) implementation(libs.vanniktech.blurhash)
implementation(projects.features.enterprise.api)
implementation(projects.libraries.architecture) implementation(projects.libraries.architecture)
implementation(projects.libraries.preferences.api) implementation(projects.libraries.preferences.api)
implementation(projects.libraries.testtags) implementation(projects.libraries.testtags)

View file

@ -7,24 +7,24 @@
package io.element.android.libraries.designsystem package io.element.android.libraries.designsystem
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import io.element.android.compound.theme.ElementTheme
@Composable @Composable
fun Boolean.toEnabledColor(): Color { fun Boolean.toEnabledColor(): Color {
return if (this) { return if (this) {
MaterialTheme.colorScheme.primary ElementTheme.colors.textPrimary
} else { } else {
MaterialTheme.colorScheme.primary.copy(alpha = 0.40f) ElementTheme.colors.textDisabled
} }
} }
@Composable @Composable
fun Boolean.toSecondaryEnabledColor(): Color { fun Boolean.toSecondaryEnabledColor(): Color {
return if (this) { return if (this) {
MaterialTheme.colorScheme.secondary ElementTheme.colors.textSecondary
} else { } else {
MaterialTheme.colorScheme.secondary.copy(alpha = 0.40f) ElementTheme.colors.textDisabled
} }
} }

View file

@ -33,7 +33,7 @@ fun RedIndicatorAtom(
Box( Box(
modifier = modifier modifier = modifier
.size(size) .size(size)
.border(borderSize, ElementTheme.materialColors.background, CircleShape) .border(borderSize, ElementTheme.colors.bgCanvasDefault, CircleShape)
.padding(borderSize / 2) .padding(borderSize / 2)
.clip(CircleShape) .clip(CircleShape)
.background(color) .background(color)

View file

@ -15,7 +15,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Home import androidx.compose.material.icons.filled.Home
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -45,7 +44,7 @@ fun RoundedIconAtom(
size: RoundedIconAtomSize = RoundedIconAtomSize.Big, size: RoundedIconAtomSize = RoundedIconAtomSize.Big,
resourceId: Int? = null, resourceId: Int? = null,
imageVector: ImageVector? = null, imageVector: ImageVector? = null,
tint: Color = MaterialTheme.colorScheme.secondary, tint: Color = ElementTheme.colors.iconSecondary,
backgroundTint: Color = ElementTheme.colors.temporaryColorBgSpecial, backgroundTint: Color = ElementTheme.colors.temporaryColorBgSpecial,
) { ) {
Box( Box(

View file

@ -58,7 +58,7 @@ fun ComposerAlertMolecule(
) )
val startColor = if (isCritical) ElementTheme.colors.bgCriticalSubtle else ElementTheme.colors.bgInfoSubtle val startColor = if (isCritical) ElementTheme.colors.bgCriticalSubtle else ElementTheme.colors.bgInfoSubtle
val brush = Brush.verticalGradient( val brush = Brush.verticalGradient(
listOf(startColor, ElementTheme.materialColors.background), listOf(startColor, ElementTheme.colors.bgCanvasDefault),
) )
Box( Box(
modifier = Modifier modifier = Modifier

View file

@ -11,7 +11,6 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -51,7 +50,7 @@ fun IconTitleSubtitleMolecule(
.fillMaxWidth(), .fillMaxWidth(),
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
style = ElementTheme.typography.fontHeadingMdBold, style = ElementTheme.typography.fontHeadingMdBold,
color = MaterialTheme.colorScheme.primary, color = ElementTheme.colors.textPrimary,
) )
if (subTitle != null) { if (subTitle != null) {
Spacer(Modifier.height(8.dp)) Spacer(Modifier.height(8.dp))
@ -60,7 +59,7 @@ fun IconTitleSubtitleMolecule(
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
) )
} }
} }

View file

@ -16,7 +16,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.movableContentOf import androidx.compose.runtime.movableContentOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
@ -46,7 +45,7 @@ import io.element.android.libraries.designsystem.theme.components.Text
fun HeaderFooterPage( fun HeaderFooterPage(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
paddingValues: PaddingValues = PaddingValues(20.dp), paddingValues: PaddingValues = PaddingValues(20.dp),
containerColor: Color = MaterialTheme.colorScheme.background, containerColor: Color = ElementTheme.colors.bgCanvasDefault,
isScrollable: Boolean = false, isScrollable: Boolean = false,
background: @Composable () -> Unit = {}, background: @Composable () -> Unit = {},
topBar: @Composable () -> Unit = {}, topBar: @Composable () -> Unit = {},

View file

@ -9,13 +9,13 @@ package io.element.android.libraries.designsystem.background
import androidx.compose.foundation.Canvas import androidx.compose.foundation.Canvas
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.center import androidx.compose.ui.geometry.center
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.RadialGradientShader import androidx.compose.ui.graphics.RadialGradientShader
import androidx.compose.ui.graphics.ShaderBrush import androidx.compose.ui.graphics.ShaderBrush
import io.element.android.compound.theme.ElementTheme
import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.PreviewsDayNight
@ -25,7 +25,7 @@ import io.element.android.libraries.designsystem.preview.PreviewsDayNight
@Composable @Composable
fun LightGradientBackground( fun LightGradientBackground(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
backgroundColor: Color = MaterialTheme.colorScheme.background, backgroundColor: Color = ElementTheme.colors.bgCanvasDefault,
firstColor: Color = Color(0x1E0DBD8B), firstColor: Color = Color(0x1E0DBD8B),
secondColor: Color = Color(0x001273EB), secondColor: Color = Color(0x001273EB),
ratio: Float = 642 / 775f, ratio: Float = 642 / 775f,

View file

@ -477,7 +477,7 @@ internal fun BloomPreview() {
} }
.bloom( .bloom(
hash = blurhash, hash = blurhash,
background = ElementTheme.materialColors.background, background = ElementTheme.colors.bgCanvasDefault,
blurSize = DpSize(430.dp, 430.dp), blurSize = DpSize(430.dp, 430.dp),
offset = DpOffset(24.dp, 24.dp), offset = DpOffset(24.dp, 24.dp),
clipToSize = if (topAppBarHeight > 0) DpSize(430.dp, topAppBarHeight.toDp()) else DpSize.Zero, clipToSize = if (topAppBarHeight > 0) DpSize(430.dp, topAppBarHeight.toDp()) else DpSize.Zero,
@ -554,9 +554,9 @@ internal fun BloomInitialsPreview(@PreviewParameter(InitialsColorIntProvider::cl
// Workaround to display a very subtle bloom for avatars with very soft colors // Workaround to display a very subtle bloom for avatars with very soft colors
Color(0xFFF9F9F9) Color(0xFFF9F9F9)
} else { } else {
ElementTheme.materialColors.background ElementTheme.colors.bgCanvasDefault
}, },
bottomSoftEdgeColor = ElementTheme.materialColors.background, bottomSoftEdgeColor = ElementTheme.colors.bgCanvasDefault,
blurSize = DpSize(256.dp, 256.dp), blurSize = DpSize(256.dp, 256.dp),
), ),
contentAlignment = Alignment.Center contentAlignment = Alignment.Center

View file

@ -9,11 +9,11 @@ package io.element.android.libraries.designsystem.components
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import io.element.android.compound.theme.ElementTheme
import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.ElementThemedPreview
import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.preview.PreviewGroup
import io.element.android.libraries.designsystem.theme.components.Checkbox import io.element.android.libraries.designsystem.theme.components.Checkbox
@ -38,7 +38,7 @@ fun LabelledCheckbox(
) )
Text( Text(
text = text, text = text,
color = MaterialTheme.colorScheme.primary, color = ElementTheme.colors.textPrimary,
) )
} }
} }

View file

@ -26,6 +26,7 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties import androidx.compose.ui.window.DialogProperties
import io.element.android.compound.theme.ElementTheme
import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.ElementThemedPreview
import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.preview.PreviewGroup
@ -64,13 +65,13 @@ fun ProgressDialog(
when (type) { when (type) {
is ProgressDialogType.Indeterminate -> { is ProgressDialogType.Indeterminate -> {
CircularProgressIndicator( CircularProgressIndicator(
color = MaterialTheme.colorScheme.primary color = ElementTheme.colors.iconPrimary
) )
} }
is ProgressDialogType.Determinate -> { is ProgressDialogType.Determinate -> {
CircularProgressIndicator( CircularProgressIndicator(
progress = { type.progress }, progress = { type.progress },
color = MaterialTheme.colorScheme.primary color = ElementTheme.colors.iconPrimary
) )
} }
} }
@ -93,7 +94,7 @@ private fun ProgressDialogContent(
onCancelClick: () -> Unit = {}, onCancelClick: () -> Unit = {},
progressIndicator: @Composable () -> Unit = { progressIndicator: @Composable () -> Unit = {
CircularProgressIndicator( CircularProgressIndicator(
color = MaterialTheme.colorScheme.primary color = ElementTheme.colors.iconPrimary
) )
} }
) { ) {
@ -114,7 +115,7 @@ private fun ProgressDialogContent(
Spacer(modifier = Modifier.height(22.dp)) Spacer(modifier = Modifier.height(22.dp))
Text( Text(
text = text, text = text,
color = MaterialTheme.colorScheme.primary, color = ElementTheme.colors.textPrimary,
) )
} }
if (showCancelButton) { if (showCancelButton) {

View file

@ -17,7 +17,6 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.layout.widthIn
import androidx.compose.material3.LocalContentColor import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ripple import androidx.compose.material3.ripple
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
@ -58,17 +57,16 @@ fun MainActionButton(
.widthIn(min = 76.dp, max = 96.dp), .widthIn(min = 76.dp, max = 96.dp),
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
) { ) {
val tintColor = if (enabled) LocalContentColor.current else MaterialTheme.colorScheme.secondary
Icon( Icon(
imageVector = imageVector, imageVector = imageVector,
contentDescription = contentDescription, contentDescription = contentDescription,
tint = tintColor, tint = if (enabled) LocalContentColor.current else ElementTheme.colors.iconDisabled,
) )
Spacer(modifier = Modifier.height(14.dp)) Spacer(modifier = Modifier.height(14.dp))
Text( Text(
title, title,
style = ElementTheme.typography.fontBodyMdMedium.copy(hyphens = Hyphens.Auto), style = ElementTheme.typography.fontBodyMdMedium.copy(hyphens = Hyphens.Auto),
color = tintColor, color = if (enabled) LocalContentColor.current else ElementTheme.colors.textDisabled,
overflow = TextOverflow.Visible, overflow = TextOverflow.Visible,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
) )

View file

@ -7,7 +7,6 @@
package io.element.android.libraries.designsystem.theme package io.element.android.libraries.designsystem.theme
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import io.element.android.compound.annotations.CoreColorToken import io.element.android.compound.annotations.CoreColorToken
@ -24,13 +23,13 @@ import kotlinx.collections.immutable.persistentMapOf
* Room list. * Room list.
*/ */
@Composable @Composable
fun MaterialTheme.roomListRoomName() = colorScheme.primary fun ElementTheme.roomListRoomName() = colors.textPrimary
@Composable @Composable
fun MaterialTheme.roomListRoomMessage() = colorScheme.secondary fun ElementTheme.roomListRoomMessage() = colors.textSecondary
@Composable @Composable
fun MaterialTheme.roomListRoomMessageDate() = colorScheme.secondary fun ElementTheme.roomListRoomMessageDate() = colors.textSecondary
val SemanticColors.unreadIndicator val SemanticColors.unreadIndicator
get() = iconAccentTertiary get() = iconAccentTertiary
@ -181,9 +180,9 @@ internal fun ColorAliasesPreview() = ElementPreview {
backgroundColor = Color.Black, backgroundColor = Color.Black,
foregroundColor = Color.White, foregroundColor = Color.White,
colors = persistentMapOf( colors = persistentMapOf(
"roomListRoomName" to MaterialTheme.roomListRoomName(), "roomListRoomName" to ElementTheme.roomListRoomName(),
"roomListRoomMessage" to MaterialTheme.roomListRoomMessage(), "roomListRoomMessage" to ElementTheme.roomListRoomMessage(),
"roomListRoomMessageDate" to MaterialTheme.roomListRoomMessageDate(), "roomListRoomMessageDate" to ElementTheme.roomListRoomMessageDate(),
"unreadIndicator" to ElementTheme.colors.unreadIndicator, "unreadIndicator" to ElementTheme.colors.unreadIndicator,
"placeholderBackground" to ElementTheme.colors.placeholderBackground, "placeholderBackground" to ElementTheme.colors.placeholderBackground,
"messageFromMeBackground" to ElementTheme.colors.messageFromMeBackground, "messageFromMeBackground" to ElementTheme.colors.messageFromMeBackground,

View file

@ -17,6 +17,7 @@ import io.element.android.compound.theme.ElementTheme
import io.element.android.compound.theme.Theme import io.element.android.compound.theme.Theme
import io.element.android.compound.theme.isDark import io.element.android.compound.theme.isDark
import io.element.android.compound.theme.mapToTheme import io.element.android.compound.theme.mapToTheme
import io.element.android.features.enterprise.api.EnterpriseService
import io.element.android.libraries.preferences.api.store.AppPreferencesStore import io.element.android.libraries.preferences.api.store.AppPreferencesStore
/** /**
@ -29,6 +30,7 @@ import io.element.android.libraries.preferences.api.store.AppPreferencesStore
@Composable @Composable
fun ElementThemeApp( fun ElementThemeApp(
appPreferencesStore: AppPreferencesStore, appPreferencesStore: AppPreferencesStore,
enterpriseService: EnterpriseService,
content: @Composable () -> Unit, content: @Composable () -> Unit,
) { ) {
val theme by remember { val theme by remember {
@ -44,8 +46,12 @@ fun ElementThemeApp(
} }
) )
} }
val compoundLight = remember { enterpriseService.semanticColorsLight() }
val compoundDark = remember { enterpriseService.semanticColorsDark() }
ElementTheme( ElementTheme(
darkTheme = theme.isDark(), darkTheme = theme.isDark(),
content = content, content = content,
compoundLight = compoundLight,
compoundDark = compoundDark,
) )
} }

View file

@ -159,7 +159,7 @@ internal fun SimpleAlertDialogContent(
// most cases, TextButtons should be used for dismiss and confirm buttons. // most cases, TextButtons should be used for dismiss and confirm buttons.
// TextButtons will not consume this provided content color value, and will used their // TextButtons will not consume this provided content color value, and will used their
// own defined or default colors. // own defined or default colors.
buttonContentColor = MaterialTheme.colorScheme.primary, buttonContentColor = ElementTheme.colors.textPrimary,
applyPaddingToContents = applyPaddingToContents, applyPaddingToContents = applyPaddingToContents,
) )
} }

View file

@ -314,7 +314,7 @@ internal enum class ButtonStyle {
contentColor = if (destructive) { contentColor = if (destructive) {
ElementTheme.colors.textCriticalPrimary ElementTheme.colors.textCriticalPrimary
} else { } else {
if (LocalContentColor.current.isSpecified) LocalContentColor.current else ElementTheme.materialColors.primary if (LocalContentColor.current.isSpecified) LocalContentColor.current else ElementTheme.colors.textPrimary
}, },
disabledContainerColor = Color.Transparent, disabledContainerColor = Color.Transparent,
disabledContentColor = getDisabledContentColor(destructive), disabledContentColor = getDisabledContentColor(destructive),

View file

@ -106,7 +106,7 @@ fun <T> SearchBar(
Icon( Icon(
imageVector = CompoundIcons.Search(), imageVector = CompoundIcons.Search(),
contentDescription = stringResource(CommonStrings.action_search), contentDescription = stringResource(CommonStrings.action_search),
tint = ElementTheme.materialColors.tertiary, tint = ElementTheme.colors.iconTertiary,
) )
} }
} }
@ -138,7 +138,7 @@ fun <T> SearchBar(
Text( Text(
text = stringResource(CommonStrings.common_no_results), text = stringResource(CommonStrings.common_no_results),
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
color = ElementTheme.materialColors.tertiary, color = ElementTheme.colors.textSecondary,
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
) )
} }

View file

@ -10,10 +10,10 @@ package io.element.android.libraries.designsystem.theme.components.previews
import androidx.compose.material3.AlertDialogDefaults import androidx.compose.material3.AlertDialogDefaults
import androidx.compose.material3.DatePicker import androidx.compose.material3.DatePicker
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.rememberDatePickerState import androidx.compose.material3.rememberDatePickerState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import io.element.android.compound.theme.ElementTheme
import io.element.android.libraries.architecture.coverage.ExcludeFromCoverage import io.element.android.libraries.architecture.coverage.ExcludeFromCoverage
import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewDark
import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.preview.ElementPreviewLight
@ -48,7 +48,7 @@ private fun ContentToPreview() {
shape = AlertDialogDefaults.shape, shape = AlertDialogDefaults.shape,
containerColor = AlertDialogDefaults.containerColor, containerColor = AlertDialogDefaults.containerColor,
tonalElevation = AlertDialogDefaults.TonalElevation, tonalElevation = AlertDialogDefaults.TonalElevation,
buttonContentColor = MaterialTheme.colorScheme.primary, buttonContentColor = ElementTheme.colors.textPrimary,
iconContentColor = AlertDialogDefaults.iconContentColor, iconContentColor = AlertDialogDefaults.iconContentColor,
titleContentColor = AlertDialogDefaults.titleContentColor, titleContentColor = AlertDialogDefaults.titleContentColor,
textContentColor = AlertDialogDefaults.textContentColor, textContentColor = AlertDialogDefaults.textContentColor,

View file

@ -9,12 +9,12 @@ package io.element.android.libraries.designsystem.theme.components.previews
import androidx.compose.material3.AlertDialogDefaults import androidx.compose.material3.AlertDialogDefaults
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.TimePicker import androidx.compose.material3.TimePicker
import androidx.compose.material3.TimePickerLayoutType import androidx.compose.material3.TimePickerLayoutType
import androidx.compose.material3.rememberTimePickerState import androidx.compose.material3.rememberTimePickerState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import io.element.android.compound.theme.ElementTheme
import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewDark
import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.preview.ElementPreviewLight
import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.ElementThemedPreview
@ -35,7 +35,7 @@ internal fun TimePickerHorizontalPreview() {
shape = AlertDialogDefaults.shape, shape = AlertDialogDefaults.shape,
containerColor = AlertDialogDefaults.containerColor, containerColor = AlertDialogDefaults.containerColor,
tonalElevation = AlertDialogDefaults.TonalElevation, tonalElevation = AlertDialogDefaults.TonalElevation,
buttonContentColor = MaterialTheme.colorScheme.primary, buttonContentColor = ElementTheme.colors.textPrimary,
iconContentColor = AlertDialogDefaults.iconContentColor, iconContentColor = AlertDialogDefaults.iconContentColor,
titleContentColor = AlertDialogDefaults.titleContentColor, titleContentColor = AlertDialogDefaults.titleContentColor,
textContentColor = AlertDialogDefaults.textContentColor, textContentColor = AlertDialogDefaults.textContentColor,
@ -57,7 +57,7 @@ internal fun TimePickerVerticalLightPreview() {
shape = AlertDialogDefaults.shape, shape = AlertDialogDefaults.shape,
containerColor = AlertDialogDefaults.containerColor, containerColor = AlertDialogDefaults.containerColor,
tonalElevation = AlertDialogDefaults.TonalElevation, tonalElevation = AlertDialogDefaults.TonalElevation,
buttonContentColor = MaterialTheme.colorScheme.primary, buttonContentColor = ElementTheme.colors.textPrimary,
iconContentColor = AlertDialogDefaults.iconContentColor, iconContentColor = AlertDialogDefaults.iconContentColor,
titleContentColor = AlertDialogDefaults.titleContentColor, titleContentColor = AlertDialogDefaults.titleContentColor,
textContentColor = AlertDialogDefaults.textContentColor, textContentColor = AlertDialogDefaults.textContentColor,
@ -83,7 +83,7 @@ internal fun TimePickerVerticalDarkPreview() {
shape = AlertDialogDefaults.shape, shape = AlertDialogDefaults.shape,
containerColor = AlertDialogDefaults.containerColor, containerColor = AlertDialogDefaults.containerColor,
tonalElevation = AlertDialogDefaults.TonalElevation, tonalElevation = AlertDialogDefaults.TonalElevation,
buttonContentColor = MaterialTheme.colorScheme.primary, buttonContentColor = ElementTheme.colors.textPrimary,
iconContentColor = AlertDialogDefaults.iconContentColor, iconContentColor = AlertDialogDefaults.iconContentColor,
titleContentColor = AlertDialogDefaults.titleContentColor, titleContentColor = AlertDialogDefaults.titleContentColor,
textContentColor = AlertDialogDefaults.textContentColor, textContentColor = AlertDialogDefaults.textContentColor,

View file

@ -17,7 +17,6 @@ import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
@ -97,7 +96,7 @@ private fun AvatarActionBottomSheetContent(
Text( Text(
text = stringResource(action.titleResId), text = stringResource(action.titleResId),
style = ElementTheme.typography.fontBodyLgRegular, style = ElementTheme.typography.fontBodyLgRegular,
color = if (action.destructive) MaterialTheme.colorScheme.error else MaterialTheme.colorScheme.primary, color = if (action.destructive) ElementTheme.colors.textCriticalPrimary else ElementTheme.colors.textPrimary,
) )
}, },
leadingContent = ListItemContent.Icon(IconSource.Resource(action.iconResourceId)), leadingContent = ListItemContent.Icon(IconSource.Resource(action.iconResourceId)),

View file

@ -17,7 +17,6 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ripple import androidx.compose.material3.ripple
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
@ -27,6 +26,7 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewParameterProvider import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.compound.theme.ElementTheme
import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.compound.tokens.generated.CompoundIcons
import io.element.android.libraries.designsystem.components.avatar.Avatar import io.element.android.libraries.designsystem.components.avatar.Avatar
import io.element.android.libraries.designsystem.components.avatar.AvatarData import io.element.android.libraries.designsystem.components.avatar.AvatarData
@ -79,7 +79,7 @@ fun EditableAvatarView(
modifier = Modifier modifier = Modifier
.align(Alignment.BottomEnd) .align(Alignment.BottomEnd)
.clip(CircleShape) .clip(CircleShape)
.background(MaterialTheme.colorScheme.primary) .background(ElementTheme.colors.iconPrimary)
.size(24.dp), .size(24.dp),
contentAlignment = Alignment.Center, contentAlignment = Alignment.Center,
) { ) {
@ -87,7 +87,7 @@ fun EditableAvatarView(
modifier = Modifier.size(16.dp), modifier = Modifier.size(16.dp),
imageVector = CompoundIcons.EditSolid(), imageVector = CompoundIcons.EditSolid(),
contentDescription = null, contentDescription = null,
tint = MaterialTheme.colorScheme.onPrimary, tint = ElementTheme.colors.iconOnSolidPrimary,
) )
} }
} }

View file

@ -11,7 +11,6 @@ import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
@ -40,7 +39,7 @@ fun InviteSenderView(
Text( Text(
text = inviteSender.annotatedString(), text = inviteSender.annotatedString(),
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
) )
} }
} }

View file

@ -77,14 +77,14 @@ private fun MatrixUserHeaderContent(
maxLines = 1, maxLines = 1,
style = ElementTheme.typography.fontHeadingSmMedium, style = ElementTheme.typography.fontHeadingSmMedium,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
color = ElementTheme.materialColors.primary, color = ElementTheme.colors.textPrimary,
) )
// Id // Id
if (matrixUser.displayName.isNullOrEmpty().not()) { if (matrixUser.displayName.isNullOrEmpty().not()) {
Text( Text(
text = matrixUser.userId.value, text = matrixUser.userId.value,
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
color = ElementTheme.materialColors.secondary, color = ElementTheme.colors.textSecondary,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis overflow = TextOverflow.Ellipsis
) )

View file

@ -26,6 +26,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.compound.theme.ElementTheme
import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.compound.tokens.generated.CompoundIcons
import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.avatar.AvatarSize
import io.element.android.libraries.designsystem.components.avatar.CompositeAvatar import io.element.android.libraries.designsystem.components.avatar.CompositeAvatar
@ -65,21 +66,21 @@ fun SelectedRoom(
) )
} }
Surface( Surface(
color = MaterialTheme.colorScheme.primary, color = ElementTheme.colors.iconPrimary,
modifier = Modifier modifier = Modifier
.clip(CircleShape) .clip(CircleShape)
.size(20.dp) .size(20.dp)
.align(Alignment.TopEnd) .align(Alignment.TopEnd)
.clickable( .clickable(
indication = ripple(), indication = ripple(),
interactionSource = remember { MutableInteractionSource() }, interactionSource = remember { MutableInteractionSource() },
onClick = { onRemoveRoom(roomInfo) } onClick = { onRemoveRoom(roomInfo) }
), ),
) { ) {
Icon( Icon(
imageVector = CompoundIcons.Close(), imageVector = CompoundIcons.Close(),
contentDescription = stringResource(id = CommonStrings.action_remove), contentDescription = stringResource(id = CommonStrings.action_remove),
tint = MaterialTheme.colorScheme.onPrimary, tint = ElementTheme.colors.iconOnSolidPrimary,
modifier = Modifier.padding(2.dp) modifier = Modifier.padding(2.dp)
) )
} }

View file

@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -58,7 +57,7 @@ fun UnresolvedUserRow(
text = id, text = id,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
color = MaterialTheme.colorScheme.primary, color = ElementTheme.colors.textPrimary,
style = ElementTheme.typography.fontBodyLgMedium, style = ElementTheme.typography.fontBodyLgMedium,
) )
@ -75,12 +74,11 @@ fun UnresolvedUserRow(
.size(18.dp) .size(18.dp)
.align(Alignment.Top) .align(Alignment.Top)
.padding(2.dp), .padding(2.dp),
tint = MaterialTheme.colorScheme.error, tint = ElementTheme.colors.iconCriticalPrimary,
) )
Text( Text(
text = stringResource(CommonStrings.common_invite_unknown_profile), text = stringResource(CommonStrings.common_invite_unknown_profile),
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
style = ElementTheme.typography.fontBodySmRegular.copy(lineHeight = 16.sp), style = ElementTheme.typography.fontBodySmRegular.copy(lineHeight = 16.sp),
) )
} }

View file

@ -67,7 +67,7 @@ fun UnsavedAvatar(
modifier = Modifier modifier = Modifier
.align(Alignment.Center) .align(Alignment.Center)
.size(40.dp), .size(40.dp),
tint = MaterialTheme.colorScheme.secondary, tint = ElementTheme.colors.iconSecondary,
) )
} }
} }

View file

@ -12,7 +12,6 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -51,14 +50,14 @@ internal fun UserRow(
text = name, text = name,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
color = MaterialTheme.colorScheme.primary, color = ElementTheme.colors.textPrimary,
style = ElementTheme.typography.fontBodyLgRegular, style = ElementTheme.typography.fontBodyLgRegular,
) )
// Id // Id
subtext?.let { subtext?.let {
Text( Text(
text = subtext, text = subtext,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
style = ElementTheme.typography.fontBodySmRegular, style = ElementTheme.typography.fontBodySmRegular,

View file

@ -140,7 +140,7 @@ private fun ReplyToErrorContent(
Text( Text(
text = data.message, text = data.message,
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
color = MaterialTheme.colorScheme.error, color = ElementTheme.colors.textCriticalPrimary,
maxLines = 2, maxLines = 2,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
) )
@ -171,7 +171,7 @@ private fun ReplyToContentText(metadata: InReplyToMetadata?) {
if (iconResourceId != null) { if (iconResourceId != null) {
Icon( Icon(
resourceId = iconResourceId, resourceId = iconResourceId,
tint = MaterialTheme.colorScheme.secondary, tint = ElementTheme.colors.iconSecondary,
contentDescription = null, contentDescription = null,
modifier = Modifier.size(16.dp) modifier = Modifier.size(16.dp)
) )
@ -182,7 +182,7 @@ private fun ReplyToContentText(metadata: InReplyToMetadata?) {
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
fontStyle = fontStyle, fontStyle = fontStyle,
textAlign = TextAlign.Start, textAlign = TextAlign.Start,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
maxLines = 2, maxLines = 2,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
) )

View file

@ -10,7 +10,6 @@ package io.element.android.libraries.matrix.ui.messages.sender
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.RowScope
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -77,7 +76,7 @@ private fun RowScope.MainText(
val color = when (mode) { val color = when (mode) {
is SenderNameMode.Timeline -> mode.mainColor is SenderNameMode.Timeline -> mode.mainColor
SenderNameMode.ActionList, SenderNameMode.ActionList,
SenderNameMode.Reply -> MaterialTheme.colorScheme.primary SenderNameMode.Reply -> ElementTheme.colors.textPrimary
} }
Text( Text(
modifier = modifier.clipToBounds(), modifier = modifier.clipToBounds(),
@ -108,7 +107,7 @@ private fun RowScope.SecondaryText(
modifier = modifier.clipToBounds(), modifier = modifier.clipToBounds(),
text = text, text = text,
style = style, style = style,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
) )

View file

@ -7,7 +7,6 @@
package io.element.android.libraries.matrix.ui.model package io.element.android.libraries.matrix.ui.model
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
@ -15,6 +14,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import io.element.android.compound.theme.ElementTheme
import io.element.android.libraries.designsystem.components.avatar.AvatarData import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.avatar.AvatarSize
import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.core.UserId
@ -37,7 +37,7 @@ data class InviteSender(
AnnotatedString.Range( AnnotatedString.Range(
SpanStyle( SpanStyle(
fontWeight = FontWeight.Medium, fontWeight = FontWeight.Medium,
color = MaterialTheme.colorScheme.primary color = ElementTheme.colors.textPrimary
), ),
start = senderNameStart, start = senderNameStart,
end = senderNameStart + displayName.length end = senderNameStart + displayName.length

View file

@ -15,7 +15,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@ -141,7 +140,7 @@ private fun MediaRow(
// Info // Info
Text( Text(
text = state.mediaInfo.mimeType + " - " + state.mediaInfo.formattedFileSize, text = state.mediaInfo.mimeType + " - " + state.mediaInfo.formattedFileSize,
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
style = ElementTheme.typography.fontBodySmRegular, style = ElementTheme.typography.fontBodySmRegular,

View file

@ -15,7 +15,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@ -165,7 +164,7 @@ private fun SenderRow(
// Id // Id
Text( Text(
text = mediaInfo.senderId?.value.orEmpty(), text = mediaInfo.senderId?.value.orEmpty(),
color = MaterialTheme.colorScheme.secondary, color = ElementTheme.colors.textSecondary,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,

View file

@ -25,7 +25,6 @@ import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.GraphicEq import androidx.compose.material.icons.outlined.GraphicEq
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.derivedStateOf
@ -261,13 +260,13 @@ private fun ExoPlayerMediaAudioView(
modifier = Modifier modifier = Modifier
.size(72.dp) .size(72.dp)
.clip(CircleShape) .clip(CircleShape)
.background(MaterialTheme.colorScheme.onBackground), .background(ElementTheme.colors.iconPrimary),
contentAlignment = Alignment.Center, contentAlignment = Alignment.Center,
) { ) {
Icon( Icon(
imageVector = Icons.Outlined.GraphicEq, imageVector = Icons.Outlined.GraphicEq,
contentDescription = null, contentDescription = null,
tint = MaterialTheme.colorScheme.background, tint = ElementTheme.colors.iconOnSolidPrimary,
modifier = Modifier modifier = Modifier
.size(32.dp), .size(32.dp),
) )
@ -335,7 +334,7 @@ private fun AudioInfoView(
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
color = MaterialTheme.colorScheme.primary color = ElementTheme.colors.textPrimary
) )
} }
if (info != null) { if (info != null) {
@ -346,7 +345,7 @@ private fun AudioInfoView(
style = ElementTheme.typography.fontBodyLgRegular, style = ElementTheme.typography.fontBodyLgRegular,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
color = MaterialTheme.colorScheme.primary color = ElementTheme.colors.textPrimary
) )
Spacer(modifier = Modifier.height(4.dp)) Spacer(modifier = Modifier.height(4.dp))
Text( Text(
@ -354,7 +353,7 @@ private fun AudioInfoView(
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
color = MaterialTheme.colorScheme.primary color = ElementTheme.colors.textPrimary
) )
} }
} }

View file

@ -21,7 +21,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.GraphicEq import androidx.compose.material.icons.outlined.GraphicEq
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@ -72,13 +71,13 @@ fun MediaFileView(
modifier = Modifier modifier = Modifier
.size(72.dp) .size(72.dp)
.clip(CircleShape) .clip(CircleShape)
.background(MaterialTheme.colorScheme.onBackground), .background(ElementTheme.colors.iconPrimary),
contentAlignment = Alignment.Center, contentAlignment = Alignment.Center,
) { ) {
Icon( Icon(
imageVector = if (isAudio) Icons.Outlined.GraphicEq else CompoundIcons.Attachment(), imageVector = if (isAudio) Icons.Outlined.GraphicEq else CompoundIcons.Attachment(),
contentDescription = null, contentDescription = null,
tint = MaterialTheme.colorScheme.background, tint = ElementTheme.colors.iconOnSolidPrimary,
modifier = Modifier modifier = Modifier
.size(32.dp) .size(32.dp)
.rotate(if (isAudio) 0f else -45f), .rotate(if (isAudio) 0f else -45f),
@ -92,7 +91,7 @@ fun MediaFileView(
style = ElementTheme.typography.fontBodyLgRegular, style = ElementTheme.typography.fontBodyLgRegular,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
color = MaterialTheme.colorScheme.primary color = ElementTheme.colors.textPrimary
) )
Spacer(modifier = Modifier.height(4.dp)) Spacer(modifier = Modifier.height(4.dp))
Text( Text(
@ -100,7 +99,7 @@ fun MediaFileView(
style = ElementTheme.typography.fontBodyMdRegular, style = ElementTheme.typography.fontBodyMdRegular,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
color = MaterialTheme.colorScheme.primary color = ElementTheme.colors.textPrimary
) )
} }
} }

View file

@ -88,7 +88,7 @@ private fun EditingModeView(
Icon( Icon(
imageVector = CompoundIcons.Edit(), imageVector = CompoundIcons.Edit(),
contentDescription = null, contentDescription = null,
tint = ElementTheme.materialColors.secondary, tint = ElementTheme.colors.iconSecondary,
modifier = Modifier modifier = Modifier
.padding(vertical = 8.dp) .padding(vertical = 8.dp)
.size(16.dp), .size(16.dp),
@ -97,7 +97,7 @@ private fun EditingModeView(
text = text, text = text,
style = ElementTheme.typography.fontBodySmRegular, style = ElementTheme.typography.fontBodySmRegular,
textAlign = TextAlign.Start, textAlign = TextAlign.Start,
color = ElementTheme.materialColors.secondary, color = ElementTheme.colors.textSecondary,
modifier = Modifier modifier = Modifier
.padding(vertical = 8.dp) .padding(vertical = 8.dp)
.weight(1f) .weight(1f)
@ -105,7 +105,7 @@ private fun EditingModeView(
Icon( Icon(
imageVector = CompoundIcons.Close(), imageVector = CompoundIcons.Close(),
contentDescription = stringResource(CommonStrings.action_close), contentDescription = stringResource(CommonStrings.action_close),
tint = ElementTheme.materialColors.secondary, tint = ElementTheme.colors.iconSecondary,
modifier = Modifier modifier = Modifier
.padding(top = 8.dp, bottom = 8.dp, start = 16.dp, end = 12.dp) .padding(top = 8.dp, bottom = 8.dp, start = 16.dp, end = 12.dp)
.size(16.dp) .size(16.dp)
@ -140,7 +140,7 @@ private fun ReplyToModeView(
Icon( Icon(
imageVector = CompoundIcons.Close(), imageVector = CompoundIcons.Close(),
contentDescription = stringResource(CommonStrings.action_close), contentDescription = stringResource(CommonStrings.action_close),
tint = MaterialTheme.colorScheme.secondary, tint = ElementTheme.colors.iconSecondary,
modifier = Modifier modifier = Modifier
.padding(end = 4.dp, top = 4.dp, start = 8.dp, bottom = 16.dp) .padding(end = 4.dp, top = 4.dp, start = 8.dp, bottom = 16.dp)
.size(16.dp) .size(16.dp)

View file

@ -27,9 +27,9 @@ object ElementRichTextEditorStyle {
return baseStyle.copy( return baseStyle.copy(
text = baseStyle.text.copy( text = baseStyle.text.copy(
color = if (hasFocus) { color = if (hasFocus) {
ElementTheme.materialColors.primary ElementTheme.colors.textPrimary
} else { } else {
ElementTheme.materialColors.secondary ElementTheme.colors.textSecondary
}, },
lineHeight = TextUnit.Unspecified, lineHeight = TextUnit.Unspecified,
includeFontPadding = true, includeFontPadding = true,

View file

@ -84,7 +84,7 @@ internal fun VoiceMessagePreview(
Text( Text(
text = time.formatShort(), text = time.formatShort(),
color = ElementTheme.materialColors.secondary, color = ElementTheme.colors.textSecondary,
style = ElementTheme.typography.fontBodySmMedium, style = ElementTheme.typography.fontBodySmMedium,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,

View file

@ -11,7 +11,6 @@ import android.content.res.Configuration
import android.os.LocaleList import android.os.LocaleList
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalConfiguration
@ -55,7 +54,7 @@ object ScreenshotTest {
ElementTheme { ElementTheme {
Box( Box(
modifier = Modifier modifier = Modifier
.background(MaterialTheme.colorScheme.background) .background(ElementTheme.colors.bgCanvasDefault)
) { ) {
preview() preview()
} }

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:1521e7abc43b6cee8d783e395f9ab67295bfab09acfaa26f271f6583a6c008e2 oid sha256:815354f4bd3ed435a335b5ec5ac84054e31c0f072733d35e35f337dded866b72
size 59831 size 59837

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:9dcf745eec6b0cdf29be48bd1d7e637fbd7fb4d70a42f0c55f0fd53ad5d70106 oid sha256:a780225b2b136773a6421f5ad5b31adbd91e9a8ce90a13c8e12c5f11264f4422
size 59235 size 58951

View file

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b62c398c035a386bdaba180f3090e122b78131c741cd6fdb97ad533137b6a15e
size 5531

View file

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2e55da84c46cd5d7f211f7323425f561b234c50144b8477c348015828b5656be
size 5386

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:8a2a1910e21509ebbaf5117e2abdef0dee6bb301afeeae821d0240a72e5ef721 oid sha256:2ad2339fc746eb2d97fd6c1ea654984623438b54dc3ecb0da6a57483c5daaa49
size 21538 size 21538

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:4051a95ba6a727fe0f688bd56e14739ddc617b9b3466b80c6bc60c90f91f4a4b oid sha256:4de996d888d1fab1ad4bc9373bea12caf7466c55dbb8dc94b31fcad214c75297
size 21123 size 21122

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:7d4d192e27e8f705f1049e63e6cd9759830526e43132502033fd198d9216346a oid sha256:55966ba3d9945307cc2ed1f8a52078c89bf9b47e66cd7db0f48ef9f6949240bb
size 47244 size 47241

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:58b7377a27c180c531168e48819e903554f1d85525626ab4b6d79dab7f322c43 oid sha256:d87df9b84ac158cfff84a2ad261d6446213a39b1435e4aecbd41e544cc3e42df
size 45889 size 45888

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:7d4d192e27e8f705f1049e63e6cd9759830526e43132502033fd198d9216346a oid sha256:55966ba3d9945307cc2ed1f8a52078c89bf9b47e66cd7db0f48ef9f6949240bb
size 47244 size 47241

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:58b7377a27c180c531168e48819e903554f1d85525626ab4b6d79dab7f322c43 oid sha256:d87df9b84ac158cfff84a2ad261d6446213a39b1435e4aecbd41e544cc3e42df
size 45889 size 45888

Some files were not shown because too many files have changed in this diff Show more