Iterate design on Settings screen (#1763)

* Iterate design on Settings screen:

- Set new icons provided by design.
- Replace `PreferenceText` usages with `ListItem`.
- Add missing icons, and a new way to group them for previews.

---------

Co-authored-by: ElementBot <benoitm+elementbot@element.io>
This commit is contained in:
Jorge Martin Espinosa 2023-11-08 11:31:17 +01:00 committed by GitHub
parent b57fddf19c
commit 74e5bf18fc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
34 changed files with 208 additions and 139 deletions

View file

@ -34,7 +34,7 @@ fun TimelineItemUnknownView(
TimelineItemInformativeView(
text = stringResource(id = CommonStrings.common_unsupported_event),
iconDescription = stringResource(id = CommonStrings.dialog_title_warning),
iconResourceId = CommonDrawables.ic_compound_info,
iconResourceId = CommonDrawables.ic_compound_info_solid,
extraPadding = extraPadding,
modifier = modifier
)

View file

@ -56,7 +56,7 @@ fun TimelineEncryptedHistoryBannerView(
) {
Icon(
modifier = Modifier.size(20.dp),
resourceId = CommonDrawables.ic_compound_info,
resourceId = CommonDrawables.ic_compound_info_solid,
contentDescription = "Info",
tint = ElementTheme.colors.iconInfoPrimary
)

View file

@ -22,7 +22,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Lock
import androidx.compose.material.icons.outlined.InsertChart
import androidx.compose.material.icons.outlined.VerifiedUser
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
@ -30,12 +29,15 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
import io.element.android.features.preferences.impl.user.UserPreferences
import io.element.android.libraries.designsystem.components.list.ListItemContent
import io.element.android.libraries.designsystem.components.preferences.PreferencePage
import io.element.android.libraries.designsystem.components.preferences.PreferenceText
import io.element.android.libraries.designsystem.preview.ElementPreviewDark
import io.element.android.libraries.designsystem.preview.ElementPreviewLight
import io.element.android.libraries.designsystem.preview.PreviewWithLargeHeight
import io.element.android.libraries.designsystem.theme.components.HorizontalDivider
import io.element.android.libraries.designsystem.theme.components.IconSource
import io.element.android.libraries.designsystem.theme.components.ListItem
import io.element.android.libraries.designsystem.theme.components.ListItemStyle
import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.utils.CommonDrawables
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarHost
@ -79,17 +81,17 @@ fun PreferencesRootView(
user = state.myUser,
)
if (state.showCompleteVerification) {
PreferenceText(
title = stringResource(id = CommonStrings.action_complete_verification),
icon = Icons.Outlined.VerifiedUser,
onClick = onVerifyClicked,
ListItem(
headlineContent = { Text(text = stringResource(CommonStrings.common_verify_device)) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_compound_check_circle)),
onClick = onVerifyClicked
)
}
if (state.showSecureBackup) {
PreferenceText(
title = stringResource(id = CommonStrings.common_chat_backup),
iconResourceId = CommonDrawables.ic_key_filled,
showEndBadge = state.showSecureBackupBadge,
ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.common_chat_backup)) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_key_filled),),
trailingContent = ListItemContent.Badge.takeIf { state.showSecureBackupBadge },
onClick = onSecureBackupClicked,
)
}
@ -97,65 +99,68 @@ fun PreferencesRootView(
HorizontalDivider()
}
if (state.accountManagementUrl != null) {
PreferenceText(
title = stringResource(id = CommonStrings.action_manage_account),
iconResourceId = CommonDrawables.ic_compound_pop_out,
ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.action_manage_account)) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_compound_user)),
trailingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_compound_pop_out)),
onClick = { onManageAccountClicked(state.accountManagementUrl) },
)
HorizontalDivider()
}
if (state.showAnalyticsSettings) {
PreferenceText(
title = stringResource(id = CommonStrings.common_analytics),
icon = Icons.Outlined.InsertChart,
ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.common_analytics)) },
leadingContent = ListItemContent.Icon(IconSource.Vector(Icons.Outlined.InsertChart)),
onClick = onOpenAnalytics,
)
}
if (state.showNotificationSettings) {
PreferenceText(
title = stringResource(id = CommonStrings.screen_notification_settings_title),
iconResourceId = CommonDrawables.ic_compound_notifications,
ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.screen_notification_settings_title)) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_compound_notifications)),
onClick = onOpenNotificationSettings,
)
}
PreferenceText(
title = stringResource(id = CommonStrings.action_report_bug),
iconResourceId = CommonDrawables.ic_compound_chat_problem,
ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.common_report_a_problem)) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_compound_chat_problem)),
onClick = onOpenRageShake
)
PreferenceText(
title = stringResource(id = CommonStrings.common_about),
iconResourceId = CommonDrawables.ic_compound_info,
ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.common_about)) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_compound_info)),
onClick = onOpenAbout,
)
if (state.showLockScreenSettings) {
PreferenceText(
title = stringResource(id = CommonStrings.common_screen_lock),
icon = Icons.Default.Lock,
ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.common_screen_lock)) },
leadingContent = ListItemContent.Icon(IconSource.Vector(Icons.Default.Lock)),
onClick = onOpenLockScreenSettings,
)
}
HorizontalDivider()
if (state.devicesManagementUrl != null) {
PreferenceText(
title = stringResource(id = CommonStrings.action_manage_devices),
iconResourceId = CommonDrawables.ic_compound_pop_out,
ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.action_manage_devices)) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_devices)),
trailingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_compound_pop_out)),
onClick = { onManageAccountClicked(state.devicesManagementUrl) },
)
HorizontalDivider()
}
PreferenceText(
title = stringResource(id = CommonStrings.common_advanced_settings),
iconResourceId = CommonDrawables.ic_compound_settings,
ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.common_advanced_settings)) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_compound_settings)),
onClick = onOpenAdvancedSettings,
)
if (state.showDeveloperSettings) {
DeveloperPreferencesView(onOpenDeveloperSettings)
}
HorizontalDivider()
PreferenceText(
title = stringResource(id = CommonStrings.action_signout),
iconResourceId = CommonDrawables.ic_compound_leave,
ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.action_signout)) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_sign_out)),
style = ListItemStyle.Destructive,
onClick = onSignOutClicked,
)
Text(
@ -172,9 +177,9 @@ fun PreferencesRootView(
@Composable
private fun DeveloperPreferencesView(onOpenDeveloperSettings: () -> Unit) {
PreferenceText(
title = stringResource(id = CommonStrings.common_developer_options),
iconResourceId = CommonDrawables.ic_developer_mode,
ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.common_developer_options)) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_developer_options)),
onClick = onOpenDeveloperSettings
)
}

View file

@ -185,7 +185,7 @@ private fun RecoveryKeyFooter(state: RecoveryKeyViewState) {
verticalAlignment = Alignment.CenterVertically,
) {
Icon(
resourceId = CommonDrawables.ic_compound_info,
resourceId = CommonDrawables.ic_compound_info_solid,
contentDescription = null,
tint = ElementTheme.colors.iconSecondary,
modifier = Modifier

View file

@ -78,25 +78,25 @@ internal fun InfoListItemMoleculePreview() {
) {
InfoListItemMolecule(
message = { Text("A single item") },
icon = { Icon(resourceId = CommonDrawables.ic_compound_info, contentDescription = null) },
icon = { Icon(resourceId = CommonDrawables.ic_compound_info_solid, contentDescription = null) },
position = InfoListItemPosition.Single,
backgroundColor = color,
)
InfoListItemMolecule(
message = { Text("A top item") },
icon = { Icon(resourceId = CommonDrawables.ic_compound_info, contentDescription = null) },
icon = { Icon(resourceId = CommonDrawables.ic_compound_info_solid, contentDescription = null) },
position = InfoListItemPosition.Top,
backgroundColor = color,
)
InfoListItemMolecule(
message = { Text("A middle item") },
icon = { Icon(resourceId = CommonDrawables.ic_compound_info, contentDescription = null) },
icon = { Icon(resourceId = CommonDrawables.ic_compound_info_solid, contentDescription = null) },
position = InfoListItemPosition.Middle,
backgroundColor = color,
)
InfoListItemMolecule(
message = { Text("A bottom item") },
icon = { Icon(resourceId = CommonDrawables.ic_compound_info, contentDescription = null) },
icon = { Icon(resourceId = CommonDrawables.ic_compound_info_solid, contentDescription = null) },
position = InfoListItemPosition.Bottom,
backgroundColor = color,
)

View file

@ -24,6 +24,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp
import io.element.android.libraries.designsystem.atomic.atoms.RedIndicatorAtom
import io.element.android.libraries.designsystem.theme.components.IconSource
import io.element.android.libraries.designsystem.theme.components.ListItem
import io.element.android.libraries.designsystem.theme.components.Checkbox as CheckboxComponent
@ -94,6 +95,9 @@ sealed interface ListItemContent {
/** Displays any custom content. */
data class Custom(val content: @Composable () -> Unit) : ListItemContent
/** Displays a badge. */
data object Badge : ListItemContent
@Composable
fun View() {
when (this) {
@ -114,12 +118,15 @@ sealed interface ListItemContent {
onClick = onClick,
enabled = enabled
)
is Icon -> IconComponent(
modifier = Modifier.size(maxCompactSize),
painter = iconSource.getPainter(),
contentDescription = iconSource.contentDescription
)
is Icon -> {
IconComponent(
modifier = Modifier.size(maxCompactSize),
painter = iconSource.getPainter(),
contentDescription = iconSource.contentDescription
)
}
is Text -> TextComponent(modifier = Modifier.widthIn(max = 128.dp), text = text, maxLines = 1, overflow = TextOverflow.Ellipsis)
is Badge -> RedIndicatorAtom()
is Custom -> content()
}
}

View file

@ -28,6 +28,7 @@ internal val iconsCompound = listOf(
R.drawable.ic_compound_chat_problem,
R.drawable.ic_compound_check,
R.drawable.ic_compound_check_circle,
R.drawable.ic_compound_check_circle_solid,
R.drawable.ic_compound_chevron_down,
R.drawable.ic_compound_chevron_left,
R.drawable.ic_compound_chevron_right,
@ -48,6 +49,7 @@ internal val iconsCompound = listOf(
R.drawable.ic_compound_filter,
R.drawable.ic_compound_grid_view,
R.drawable.ic_compound_info,
R.drawable.ic_compound_info_solid,
R.drawable.ic_compound_leave,
R.drawable.ic_compound_link,
R.drawable.ic_compound_lock,
@ -79,6 +81,7 @@ internal val iconsCompound = listOf(
R.drawable.ic_compound_spotlight_view,
R.drawable.ic_compound_threads,
R.drawable.ic_compound_threads_solid,
R.drawable.ic_compound_user,
R.drawable.ic_compound_user_add,
R.drawable.ic_compound_user_add_solid,
R.drawable.ic_compound_user_profile,
@ -116,7 +119,8 @@ internal val iconsSeptember = listOf(
// This list and all the drawable it contains should be removed at some point.
// All the icons should be defined in Compound.
internal val iconsOther = listOf(
R.drawable.ic_developer_mode,
R.drawable.ic_developer_options,
R.drawable.ic_devices,
R.drawable.ic_groups,
R.drawable.ic_indent_decrease,
R.drawable.ic_indent_increase,
@ -130,4 +134,5 @@ internal val iconsOther = listOf(
R.drawable.ic_strikethrough,
R.drawable.ic_thread_decoration,
R.drawable.ic_underline,
R.drawable.ic_sign_out,
)

View file

@ -27,33 +27,40 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import androidx.compose.ui.unit.dp
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.components.Icon
import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.theme.ElementTheme
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toPersistentList
@PreviewsDayNight
@Composable
internal fun IconsCompoundPart1Preview() = ElementPreview {
IconsPreview(
title = "R.drawable.ic_compound_* 1 / 2",
iconsList = iconsCompound.take(36).toPersistentList(),
iconNameTransform = { name ->
name.removePrefix("ic_compound_")
.replace("_", " ")
})
internal class IconChunkPreviewProvider : PreviewParameterProvider<IconChunk> {
override val values: Sequence<IconChunk>
get() {
val chunks = iconsCompound.chunked(36)
return chunks.mapIndexed { index, chunk ->
IconChunk(index = index+1, total = chunks.size, icons = chunk.toPersistentList())
}
.asSequence()
}
}
internal data class IconChunk(
val index: Int,
val total: Int,
val icons: ImmutableList<Int>,
)
@PreviewsDayNight
@Composable
internal fun IconsCompoundPart2Preview() = ElementPreview {
internal fun IconsCompoundPreview(@PreviewParameter(IconChunkPreviewProvider::class) chunk: IconChunk) = ElementPreview {
IconsPreview(
title = "R.drawable.ic_compound_* 2 / 2",
iconsList = iconsCompound.drop(36).toPersistentList(),
title = "R.drawable.ic_compound_* ${chunk.index}/${chunk.total}",
iconsList = chunk.icons,
iconNameTransform = { name ->
name.removePrefix("ic_compound_")
.replace("_", " ")

View file

@ -1,25 +1,9 @@
<!--
~ Copyright (c) 2023 New Vector Ltd
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M10.6,13.8L8.45,11.65C8.267,11.467 8.033,11.375 7.75,11.375C7.467,11.375 7.233,11.467 7.05,11.65C6.867,11.833 6.775,12.067 6.775,12.35C6.775,12.633 6.867,12.867 7.05,13.05L9.9,15.9C10.1,16.1 10.333,16.2 10.6,16.2C10.867,16.2 11.1,16.1 11.3,15.9L16.95,10.25C17.133,10.067 17.225,9.833 17.225,9.55C17.225,9.267 17.133,9.033 16.95,8.85C16.767,8.667 16.533,8.575 16.25,8.575C15.967,8.575 15.733,8.667 15.55,8.85L10.6,13.8ZM12,22C10.617,22 9.317,21.737 8.1,21.212C6.883,20.688 5.825,19.975 4.925,19.075C4.025,18.175 3.313,17.117 2.787,15.9C2.263,14.683 2,13.383 2,12C2,10.617 2.263,9.317 2.787,8.1C3.313,6.883 4.025,5.825 4.925,4.925C5.825,4.025 6.883,3.313 8.1,2.787C9.317,2.263 10.617,2 12,2C13.383,2 14.683,2.263 15.9,2.787C17.117,3.313 18.175,4.025 19.075,4.925C19.975,5.825 20.688,6.883 21.212,8.1C21.737,9.317 22,10.617 22,12C22,13.383 21.737,14.683 21.212,15.9C20.688,17.117 19.975,18.175 19.075,19.075C18.175,19.975 17.117,20.688 15.9,21.212C14.683,21.737 13.383,22 12,22Z"
android:fillColor="@android:color/white"/>
<path
android:fillColor="#FF000000"
android:pathData="M10.6 13.8l-2.2-2.2c-0.2-0.2-0.4-0.3-0.7-0.3-0.3 0-0.5 0.1-0.7 0.3-0.2 0.2-0.3 0.4-0.3 0.7 0 0.3 0.1 0.5 0.3 0.7L9.9 15.9c0.2 0.2 0.4 0.3 0.7 0.3 0.3 0 0.5-0.1 0.7-0.3l5.7-5.7c0.2-0.2 0.3-0.4 0.3-0.7 0-0.3-0.1-0.5-0.3-0.7-0.2-0.2-0.4-0.3-0.7-0.3-0.3 0-0.5 0.1-0.7 0.3L10.6 13.8ZM12 22c-1.4 0-2.7-0.3-3.9-0.8-1.2-0.5-2.3-1.2-3.2-2.1-0.9-0.9-1.6-2-2.1-3.2C2.3 14.7 2 13.4 2 12s0.3-2.7 0.8-3.9C3.3 6.9 4 5.8 4.9 4.9c0.9-0.9 2-1.6 3.2-2.1C9.3 2.3 10.6 2 12 2s2.7 0.3 3.9 0.8c1.2 0.5 2.3 1.2 3.2 2.1 0.9 0.9 1.6 2 2.1 3.2C21.7 9.3 22 10.6 22 12s-0.3 2.7-0.8 3.9c-0.5 1.2-1.2 2.3-2.1 3.2-0.9 0.9-2 1.6-3.2 2.1C14.7 21.7 13.4 22 12 22Zm0-2c2.2 0 4.1-0.8 5.7-2.3C19.2 16.1 20 14.2 20 12c0-2.2-0.8-4.1-2.3-5.7C16.1 4.8 14.2 4 12 4 9.8 4 7.9 4.8 6.3 6.3 4.8 7.9 4 9.8 4 12s0.8 4.1 2.3 5.7C7.9 19.2 9.8 20 12 20Z"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:pathData="M10.6 13.8l-2.2-2.2c-0.2-0.2-0.4-0.3-0.7-0.3-0.3 0-0.5 0.1-0.7 0.3-0.2 0.2-0.3 0.4-0.3 0.7 0 0.3 0.1 0.5 0.3 0.7L9.9 15.9c0.2 0.2 0.4 0.3 0.7 0.3 0.3 0 0.5-0.1 0.7-0.3l5.7-5.7c0.2-0.2 0.3-0.4 0.3-0.7 0-0.3-0.1-0.5-0.3-0.7-0.2-0.2-0.4-0.3-0.7-0.3-0.3 0-0.5 0.1-0.7 0.3L10.6 13.8ZM12 22c-1.4 0-2.7-0.3-3.9-0.8-1.2-0.5-2.3-1.2-3.2-2.1-0.9-0.9-1.6-2-2.1-3.2C2.3 14.7 2 13.4 2 12s0.3-2.7 0.8-3.9C3.3 6.9 4 5.8 4.9 4.9c0.9-0.9 2-1.6 3.2-2.1C9.3 2.3 10.6 2 12 2s2.7 0.3 3.9 0.8c1.2 0.5 2.3 1.2 3.2 2.1 0.9 0.9 1.6 2 2.1 3.2C21.7 9.3 22 10.6 22 12s-0.3 2.7-0.8 3.9c-0.5 1.2-1.2 2.3-2.1 3.2-0.9 0.9-2 1.6-3.2 2.1C14.7 21.7 13.4 22 12 22Z"/>
</vector>

View file

@ -1,25 +1,16 @@
<!--
~ Copyright (c) 2023 New Vector Ltd
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12,17C12.283,17 12.521,16.904 12.712,16.712C12.904,16.521 13,16.283 13,16V12C13,11.717 12.904,11.479 12.712,11.288C12.521,11.096 12.283,11 12,11C11.717,11 11.479,11.096 11.288,11.288C11.096,11.479 11,11.717 11,12V16C11,16.283 11.096,16.521 11.288,16.712C11.479,16.904 11.717,17 12,17ZM12,9C12.283,9 12.521,8.904 12.712,8.712C12.904,8.521 13,8.283 13,8C13,7.717 12.904,7.479 12.712,7.287C12.521,7.096 12.283,7 12,7C11.717,7 11.479,7.096 11.288,7.287C11.096,7.479 11,7.717 11,8C11,8.283 11.096,8.521 11.288,8.712C11.479,8.904 11.717,9 12,9ZM12,22C10.617,22 9.317,21.737 8.1,21.212C6.883,20.688 5.825,19.975 4.925,19.075C4.025,18.175 3.313,17.117 2.787,15.9C2.263,14.683 2,13.383 2,12C2,10.617 2.263,9.317 2.787,8.1C3.313,6.883 4.025,5.825 4.925,4.925C5.825,4.025 6.883,3.313 8.1,2.787C9.317,2.263 10.617,2 12,2C13.383,2 14.683,2.263 15.9,2.787C17.117,3.313 18.175,4.025 19.075,4.925C19.975,5.825 20.688,6.883 21.212,8.1C21.737,9.317 22,10.617 22,12C22,13.383 21.737,14.683 21.212,15.9C20.688,17.117 19.975,18.175 19.075,19.075C18.175,19.975 17.117,20.688 15.9,21.212C14.683,21.737 13.383,22 12,22Z"
android:fillColor="@android:color/white"/>
<path
android:fillColor="#FF000000"
android:pathData="M11.29 7.29C11.48 7.09 11.72 7 12 7c0.28 0 0.52 0.1 0.71 0.29C12.91 7.48 13 7.72 13 8c0 0.28-0.1 0.52-0.29 0.71C12.52 8.91 12.28 9 12 9c-0.28 0-0.52-0.1-0.71-0.29C11.09 8.52 11 8.28 11 8c0-0.28 0.1-0.52 0.29-0.71Z"/>
<path
android:fillColor="#FF000000"
android:pathData="M11.29 11.29C11.48 11.09 11.72 11 12 11c0.28 0 0.52 0.1 0.71 0.29C12.91 11.48 13 11.72 13 12v4c0 0.28-0.1 0.52-0.29 0.71C12.52 16.91 12.28 17 12 17c-0.28 0-0.52-0.1-0.71-0.29C11.09 16.52 11 16.28 11 16v-4c0-0.28 0.1-0.52 0.29-0.71Z"/>
<path
android:fillColor="#FF000000"
android:fillType="evenOdd"
android:pathData="M22 12c0 5.52-4.48 10-10 10S2 17.52 2 12 6.48 2 12 2s10 4.48 10 10Zm-2 0c0 4.42-3.58 8-8 8s-8-3.58-8-8 3.58-8 8-8 8 3.58 8 8Z"/>
</vector>

View file

@ -0,0 +1,25 @@
<!--
~ Copyright (c) 2023 New Vector Ltd
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12,17C12.283,17 12.521,16.904 12.712,16.712C12.904,16.521 13,16.283 13,16V12C13,11.717 12.904,11.479 12.712,11.288C12.521,11.096 12.283,11 12,11C11.717,11 11.479,11.096 11.288,11.288C11.096,11.479 11,11.717 11,12V16C11,16.283 11.096,16.521 11.288,16.712C11.479,16.904 11.717,17 12,17ZM12,9C12.283,9 12.521,8.904 12.712,8.712C12.904,8.521 13,8.283 13,8C13,7.717 12.904,7.479 12.712,7.287C12.521,7.096 12.283,7 12,7C11.717,7 11.479,7.096 11.288,7.287C11.096,7.479 11,7.717 11,8C11,8.283 11.096,8.521 11.288,8.712C11.479,8.904 11.717,9 12,9ZM12,22C10.617,22 9.317,21.737 8.1,21.212C6.883,20.688 5.825,19.975 4.925,19.075C4.025,18.175 3.313,17.117 2.787,15.9C2.263,14.683 2,13.383 2,12C2,10.617 2.263,9.317 2.787,8.1C3.313,6.883 4.025,5.825 4.925,4.925C5.825,4.025 6.883,3.313 8.1,2.787C9.317,2.263 10.617,2 12,2C13.383,2 14.683,2.263 15.9,2.787C17.117,3.313 18.175,4.025 19.075,4.925C19.975,5.825 20.688,6.883 21.212,8.1C21.737,9.317 22,10.617 22,12C22,13.383 21.737,14.683 21.212,15.9C20.688,17.117 19.975,18.175 19.075,19.075C18.175,19.975 17.117,20.688 15.9,21.212C14.683,21.737 13.383,22 12,22Z"
android:fillColor="@android:color/white"/>
</vector>

View file

@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:strokeColor="#FF000000"
android:strokeWidth="0.03"
android:pathData="M5.84 17.1v0.02l0.02-0.01a10.42 10.42 0 0 1 2.84-1.54 9.72 9.72 0 0 1 3.3-0.56c1.15 0 2.25 0.19 3.3 0.56a10.42 10.42 0 0 1 2.84 1.54h0.01 0.01a7.74 7.74 0 0 0 1.36-2.33 7.85 7.85 0 0 0 0.5-2.78c0-2.22-0.79-4.11-2.35-5.67-1.56-1.56-3.45-2.34-5.67-2.34-2.22 0-4.11 0.78-5.67 2.34C4.77 7.89 3.99 9.78 3.99 12c0 0.98 0.16 1.91 0.49 2.78 0.32 0.87 0.78 1.64 1.36 2.33ZM12 13c-0.98 0-1.8-0.34-2.48-1.01-0.67-0.67-1-1.5-1-2.48s0.33-1.8 1-2.48c0.67-0.67 1.5-1 2.48-1s1.8 0.33 2.48 1c0.67 0.67 1 1.5 1 2.48s-0.33 1.8-1 2.48c-0.67 0.67-1.5 1-2.48 1Zm0 9a9.72 9.72 0 0 1-3.9-0.79 10.09 10.09 0 0 1-3.17-2.13A10.09 10.09 0 0 1 2.8 15.9 9.72 9.72 0 0 1 2 12c0-1.38 0.27-2.68 0.79-3.9a10.09 10.09 0 0 1 2.13-3.17A10.09 10.09 0 0 1 8.1 2.8 9.72 9.72 0 0 1 12 2c1.38 0 2.68 0.27 3.9 0.79a10.09 10.09 0 0 1 3.17 2.13c0.9 0.9 1.6 1.96 2.13 3.17A9.72 9.72 0 0 1 22 12a9.73 9.73 0 0 1-0.79 3.9 10.09 10.09 0 0 1-2.13 3.17 10.09 10.09 0 0 1-3.17 2.13A9.72 9.72 0 0 1 12 22Z"/>
</vector>

View file

@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M344,664L160,480L344,296L400,354L274,480L400,606L344,664ZM200,680L280,680L280,720L680,720L680,680L760,680L760,840Q760,873 736.5,896.5Q713,920 680,920L280,920Q247,920 223.5,896.5Q200,873 200,840L200,680ZM280,280L200,280L200,120Q200,87 223.5,63.5Q247,40 280,40L680,40Q713,40 736.5,63.5Q760,87 760,120L760,280L680,280L680,240L280,240L280,280ZM280,800L280,840Q280,840 280,840Q280,840 280,840L680,840Q680,840 680,840Q680,840 680,840L680,800L280,800ZM280,160L680,160L680,120Q680,120 680,120Q680,120 680,120L280,120Q280,120 280,120Q280,120 280,120L280,160ZM616,664L560,606L686,480L560,354L616,296L800,480L616,664ZM280,160L280,120Q280,120 280,120Q280,120 280,120L280,120Q280,120 280,120Q280,120 280,120L280,160L280,160ZM280,800L280,800L280,840Q280,840 280,840Q280,840 280,840L280,840Q280,840 280,840Q280,840 280,840L280,800Z"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M8.825,12L10.3,10.525C10.5,10.325 10.6,10.092 10.6,9.825C10.6,9.558 10.5,9.325 10.3,9.125C10.1,8.925 9.863,8.825 9.587,8.825C9.313,8.825 9.075,8.925 8.875,9.125L6.7,11.3C6.6,11.4 6.529,11.508 6.488,11.625C6.446,11.742 6.425,11.867 6.425,12C6.425,12.133 6.446,12.258 6.488,12.375C6.529,12.492 6.6,12.6 6.7,12.7L8.875,14.875C9.075,15.075 9.313,15.175 9.587,15.175C9.863,15.175 10.1,15.075 10.3,14.875C10.5,14.675 10.6,14.442 10.6,14.175C10.6,13.908 10.5,13.675 10.3,13.475L8.825,12ZM15.175,12L13.7,13.475C13.5,13.675 13.4,13.908 13.4,14.175C13.4,14.442 13.5,14.675 13.7,14.875C13.9,15.075 14.137,15.175 14.413,15.175C14.688,15.175 14.925,15.075 15.125,14.875L17.3,12.7C17.4,12.6 17.471,12.492 17.513,12.375C17.554,12.258 17.575,12.133 17.575,12C17.575,11.867 17.554,11.742 17.513,11.625C17.471,11.508 17.4,11.4 17.3,11.3L15.125,9.125C15.025,9.025 14.913,8.95 14.788,8.9C14.663,8.85 14.538,8.825 14.413,8.825C14.288,8.825 14.163,8.85 14.038,8.9C13.913,8.95 13.8,9.025 13.7,9.125C13.5,9.325 13.4,9.558 13.4,9.825C13.4,10.092 13.5,10.325 13.7,10.525L15.175,12ZM5,21C4.45,21 3.979,20.804 3.588,20.413C3.196,20.021 3,19.55 3,19V5C3,4.45 3.196,3.979 3.588,3.588C3.979,3.196 4.45,3 5,3H19C19.55,3 20.021,3.196 20.413,3.588C20.804,3.979 21,4.45 21,5V19C21,19.55 20.804,20.021 20.413,20.413C20.021,20.804 19.55,21 19,21H5ZM5,19H19V5H5V19Z"
android:fillColor="#1B1D22"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M3.5,20C3.083,20 2.729,19.854 2.438,19.563C2.146,19.271 2,18.917 2,18.5C2,18.083 2.146,17.729 2.438,17.438C2.729,17.146 3.083,17 3.5,17H4V6C4,5.45 4.196,4.979 4.588,4.588C4.979,4.196 5.45,4 6,4H20C20.283,4 20.521,4.096 20.712,4.287C20.904,4.479 21,4.717 21,5C21,5.283 20.904,5.521 20.712,5.713C20.521,5.904 20.283,6 20,6H6V17H10.5C10.917,17 11.271,17.146 11.563,17.438C11.854,17.729 12,18.083 12,18.5C12,18.917 11.854,19.271 11.563,19.563C11.271,19.854 10.917,20 10.5,20H3.5ZM15,20C14.717,20 14.479,19.904 14.288,19.712C14.096,19.521 14,19.283 14,19V9C14,8.717 14.096,8.479 14.288,8.288C14.479,8.096 14.717,8 15,8H21C21.283,8 21.521,8.096 21.712,8.288C21.904,8.479 22,8.717 22,9V19C22,19.283 21.904,19.521 21.712,19.712C21.521,19.904 21.283,20 21,20H15ZM16,17H20V10H16V17Z"
android:fillColor="#1B1D22"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M9,12.031C9,11.748 9.096,11.51 9.288,11.319C9.479,11.127 9.717,11.031 10,11.031H17.15L15.275,9.156C15.075,8.956 14.975,8.723 14.975,8.456C14.975,8.19 15.083,7.948 15.3,7.731C15.5,7.531 15.738,7.435 16.013,7.444C16.288,7.452 16.517,7.548 16.7,7.731L20.3,11.331C20.4,11.431 20.471,11.54 20.513,11.656C20.554,11.773 20.575,11.898 20.575,12.031C20.575,12.165 20.554,12.29 20.513,12.406C20.471,12.523 20.4,12.631 20.3,12.731L16.7,16.331C16.5,16.531 16.263,16.627 15.988,16.619C15.713,16.61 15.483,16.515 15.3,16.331C15.1,16.131 14.996,15.894 14.988,15.619C14.979,15.344 15.075,15.106 15.275,14.906L17.15,13.031H10C9.717,13.031 9.479,12.935 9.288,12.744C9.096,12.552 9,12.315 9,12.031ZM3,5.031C3,4.481 3.196,4.01 3.588,3.619C3.979,3.227 4.45,3.031 5,3.031H11C11.283,3.031 11.521,3.127 11.713,3.319C11.904,3.51 12,3.748 12,4.031C12,4.315 11.904,4.552 11.713,4.744C11.521,4.935 11.283,5.031 11,5.031L5,5.031L5,19.031H11C11.283,19.031 11.521,19.127 11.713,19.319C11.904,19.51 12,19.748 12,20.031C12,20.315 11.904,20.552 11.713,20.744C11.521,20.935 11.283,21.031 11,21.031H5C4.45,21.031 3.979,20.835 3.588,20.444C3.196,20.052 3,19.581 3,19.031V5.031Z"
android:fillColor="#1B1D22"/>
</vector>

View file

@ -172,8 +172,10 @@
<string name="common_voice_message">"Voice message"</string>
<string name="common_waiting">"Waiting…"</string>
<string name="common_waiting_for_decryption_key">"Waiting for this message"</string>
<string name="common_report_a_problem">"Report a problem"</string>
<string name="common_poll_end_confirmation">"Are you sure you want to end this poll?"</string>
<string name="common_poll_summary">"Poll: %1$s"</string>
<string name="common_verify_device">"Verify device"</string>
<string name="dialog_title_confirmation">"Confirmation"</string>
<string name="dialog_title_warning">"Warning"</string>
<string name="emoji_picker_category_activity">"Activities"</string>

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7c79d4722b2cba273d2ce6c71a533c338810adf2919ac163de27f4c49a132981
size 43962
oid sha256:79759b51c1a16981d2643030596d48788bc7028b7f52fb1d2fdda31992841b9a
size 45193

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:48dbab6995ee03ccb67678229e804d96b471dbc7db48d0e7dce0b61f69d53dfb
size 43285
oid sha256:0bee3d838df124a7668b93f06e5bfc10d71705c1e5d76790d1e72cd18ad54d45
size 44522

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e6f75db2d6b6fe5e655fef4c74781e9c9bc00408c569a679837f4fb5529b4508
size 46866
oid sha256:12fbb25e7316b85696813eb598458f0b5617bc87a1277535928693082dbe17da
size 48253

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8b34af47ea56faa01a23c9bd12620153d1d79a522bbcab42ad4051bdf19270ae
size 46758
oid sha256:93431e06263c26c11c2bdaf0fb977b558b419190144f007f5bb91de2d0e921cb
size 48154

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:69c2af16154cecb849b9af865583e4150edf4105f8ec10b78dbb4aab082fb51e
size 33648
oid sha256:7e80db390d11cdd8984d82d9130bfef29ccb1605feb04e435da9a082ace181b3
size 37009

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ec7c6add0edda4898d3c03623c12c7e72de17bf3a8fade410aa2da39b5a4fa42
size 32056
oid sha256:a0b8d7d8016ec2100670f155376a11b2e17be181be9cfbcb0ee8209bfcb1f739
size 35147