Merge pull request #4226 from element-hq/feature/bma/themeOverride
Theme override
This commit is contained in:
commit
98f793b02e
111 changed files with 293 additions and 275 deletions
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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))
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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))
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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),
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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))
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 = {},
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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),
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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)),
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:b62c398c035a386bdaba180f3090e122b78131c741cd6fdb97ad533137b6a15e
|
||||||
|
size 5531
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:2e55da84c46cd5d7f211f7323425f561b234c50144b8477c348015828b5656be
|
||||||
|
size 5386
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
Loading…
Add table
Add a link
Reference in a new issue