Update Compound to v0.0.5 and update icons (#2380)

Update Compound to `v0.0.5`:

- Make sure we fix all the breaking changes.
- Update some icons to use the compound version instead.
-Replace icons with their Compound counterparts when possible.
- Clean up unused icons.
- Fix issues with incorrect icons or sizes being used after replacing the temporary icons with the Compound ones.

---------

Co-authored-by: ElementBot <benoitm+elementbot@element.io>
This commit is contained in:
Jorge Martin Espinosa 2024-02-12 17:41:58 +01:00 committed by GitHub
parent 274147ccd9
commit 973c57d401
1013 changed files with 1945 additions and 3061 deletions

View file

@ -0,0 +1 @@
Update Compound icons in the project. **This is a breaking change** since the icon prefix changed to `ic_compound_` and the `CompoundIcons` helper now contains the vector icons as composable functions.

View file

@ -143,7 +143,7 @@ private fun CheckIcon() {
.size(20.dp) .size(20.dp)
.background(color = MaterialTheme.colorScheme.background, shape = CircleShape) .background(color = MaterialTheme.colorScheme.background, shape = CircleShape)
.padding(2.dp), .padding(2.dp),
imageVector = CompoundIcons.Check, imageVector = CompoundIcons.Check(),
contentDescription = null, contentDescription = null,
tint = ElementTheme.colors.textActionAccent, tint = ElementTheme.colors.textActionAccent,
) )

View file

@ -64,7 +64,7 @@ internal fun CallScreenView(
title = { Text(stringResource(R.string.element_call)) }, title = { Text(stringResource(R.string.element_call)) },
navigationIcon = { navigationIcon = {
BackButton( BackButton(
imageVector = CompoundIcons.Close, imageVector = CompoundIcons.Close(),
onClick = { state.eventSink(CallScreenEvents.Hangup) } onClick = { state.eventSink(CallScreenEvents.Hangup) }
) )
} }

View file

@ -33,18 +33,18 @@ data class RoomPrivacyItem(
@Composable @Composable
fun roomPrivacyItems(): ImmutableList<RoomPrivacyItem> { fun roomPrivacyItems(): ImmutableList<RoomPrivacyItem> {
return RoomPrivacy.values() return RoomPrivacy.entries
.map { .map {
when (it) { when (it) {
RoomPrivacy.Private -> RoomPrivacyItem( RoomPrivacy.Private -> RoomPrivacyItem(
privacy = it, privacy = it,
icon = CompoundDrawables.ic_lock, icon = CompoundDrawables.ic_compound_lock_solid,
title = stringResource(R.string.screen_create_room_private_option_title), title = stringResource(R.string.screen_create_room_private_option_title),
description = stringResource(R.string.screen_create_room_private_option_description), description = stringResource(R.string.screen_create_room_private_option_description),
) )
RoomPrivacy.Public -> RoomPrivacyItem( RoomPrivacy.Public -> RoomPrivacyItem(
privacy = it, privacy = it,
icon = CompoundDrawables.ic_public, icon = CompoundDrawables.ic_compound_public,
title = stringResource(R.string.screen_create_room_public_option_title), title = stringResource(R.string.screen_create_room_public_option_title),
description = stringResource(R.string.screen_create_room_public_option_description), description = stringResource(R.string.screen_create_room_public_option_description),
) )

View file

@ -127,7 +127,7 @@ private fun CreateRoomRootViewTopBar(
}, },
navigationIcon = { navigationIcon = {
BackButton( BackButton(
imageVector = CompoundIcons.Close, imageVector = CompoundIcons.Close(),
onClick = onClosePressed, onClick = onClosePressed,
) )
} }
@ -142,12 +142,12 @@ private fun CreateRoomActionButtonsList(
) { ) {
Column { Column {
CreateRoomActionButton( CreateRoomActionButton(
iconRes = CompoundDrawables.ic_plus, iconRes = CompoundDrawables.ic_compound_plus,
text = stringResource(id = R.string.screen_create_room_action_create_room), text = stringResource(id = R.string.screen_create_room_action_create_room),
onClick = onNewRoomClicked, onClick = onNewRoomClicked,
) )
CreateRoomActionButton( CreateRoomActionButton(
iconRes = CompoundDrawables.ic_share_android, iconRes = CompoundDrawables.ic_compound_share_android,
text = stringResource(id = CommonStrings.action_invite_friends_to_app, state.applicationName), text = stringResource(id = CommonStrings.action_invite_friends_to_app, state.applicationName),
onClick = onInvitePeopleClicked, onClick = onInvitePeopleClicked,
) )

View file

@ -79,7 +79,7 @@ private fun NotificationsOptInHeader(
modifier = modifier, modifier = modifier,
title = stringResource(R.string.screen_notification_optin_title), title = stringResource(R.string.screen_notification_optin_title),
subTitle = stringResource(R.string.screen_notification_optin_subtitle), subTitle = stringResource(R.string.screen_notification_optin_subtitle),
iconImageVector = CompoundIcons.NotificationsSolid, iconImageVector = CompoundIcons.NotificationsSolid(),
) )
} }

View file

@ -43,7 +43,6 @@ import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.components.Button import io.element.android.libraries.designsystem.theme.components.Button
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.utils.CommonDrawables
import io.element.android.libraries.testtags.TestTags import io.element.android.libraries.testtags.TestTags
import io.element.android.libraries.testtags.testTag import io.element.android.libraries.testtags.testTag
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
@ -102,11 +101,11 @@ fun WelcomeView(
private fun listItems() = persistentListOf( private fun listItems() = persistentListOf(
InfoListItem( InfoListItem(
message = stringResource(R.string.screen_welcome_bullet_2), message = stringResource(R.string.screen_welcome_bullet_2),
iconId = CommonDrawables.ic_lock_outline, iconVector = CompoundIcons.Lock(),
), ),
InfoListItem( InfoListItem(
message = stringResource(R.string.screen_welcome_bullet_3), message = stringResource(R.string.screen_welcome_bullet_3),
iconVector = CompoundIcons.ChatProblem, iconVector = CompoundIcons.ChatProblem(),
), ),
) )

View file

@ -39,6 +39,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.mapbox.mapboxsdk.camera.CameraPosition import com.mapbox.mapboxsdk.camera.CameraPosition
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.features.location.api.Location import io.element.android.features.location.api.Location
import io.element.android.features.location.api.internal.centerBottomEdge import io.element.android.features.location.api.internal.centerBottomEdge
import io.element.android.features.location.api.internal.rememberTileStyleUrl import io.element.android.features.location.api.internal.rememberTileStyleUrl
@ -211,8 +212,8 @@ fun SendLocationView(
.padding(end = 16.dp, bottom = 72.dp + navBarPadding), .padding(end = 16.dp, bottom = 72.dp + navBarPadding),
) { ) {
when (state.mode) { when (state.mode) {
SendLocationState.Mode.PinLocation -> Icon(resourceId = CommonDrawables.ic_location_navigator, contentDescription = null) SendLocationState.Mode.PinLocation -> Icon(imageVector = CompoundIcons.LocationNavigator(), contentDescription = null)
SendLocationState.Mode.SenderLocation -> Icon(resourceId = CommonDrawables.ic_location_navigator_centered, contentDescription = null) SendLocationState.Mode.SenderLocation -> Icon(imageVector = CompoundIcons.LocationNavigatorCentred(), contentDescription = null)
} }
} }
} }

View file

@ -125,7 +125,7 @@ fun ShowLocationView(
actions = { actions = {
IconButton(onClick = { state.eventSink(ShowLocationEvents.Share) }) { IconButton(onClick = { state.eventSink(ShowLocationEvents.Share) }) {
Icon( Icon(
imageVector = CompoundIcons.ShareAndroid, imageVector = CompoundIcons.ShareAndroid(),
contentDescription = stringResource(CommonStrings.action_share), contentDescription = stringResource(CommonStrings.action_share),
) )
} }

View file

@ -76,7 +76,7 @@ fun AccountProviderView(
} else { } else {
RoundedIconAtom( RoundedIconAtom(
size = RoundedIconAtomSize.Medium, size = RoundedIconAtomSize.Medium,
imageVector = CompoundIcons.Search, imageVector = CompoundIcons.Search(),
tint = MaterialTheme.colorScheme.primary, tint = MaterialTheme.colorScheme.primary,
) )
} }

View file

@ -227,7 +227,7 @@ private fun LoginForm(
IconButton(onClick = { IconButton(onClick = {
loginFieldState = "" loginFieldState = ""
}) { }) {
Icon(imageVector = CompoundIcons.Close, contentDescription = stringResource(CommonStrings.action_clear)) Icon(imageVector = CompoundIcons.Close(), contentDescription = stringResource(CommonStrings.action_clear))
} }
} }
} else { } else {
@ -263,7 +263,7 @@ private fun LoginForm(
visualTransformation = if (passwordVisible) VisualTransformation.None else PasswordVisualTransformation(), visualTransformation = if (passwordVisible) VisualTransformation.None else PasswordVisualTransformation(),
trailingIcon = { trailingIcon = {
val image = val image =
if (passwordVisible) CompoundIcons.VisibilityOn else CompoundIcons.VisibilityOff if (passwordVisible) CompoundIcons.VisibilityOn() else CompoundIcons.VisibilityOff()
val description = val description =
if (passwordVisible) stringResource(CommonStrings.a11y_hide_password) else stringResource(CommonStrings.a11y_show_password) if (passwordVisible) stringResource(CommonStrings.a11y_hide_password) else stringResource(CommonStrings.a11y_show_password)

View file

@ -103,7 +103,7 @@ fun SearchAccountProviderView(
item { item {
IconTitleSubtitleMolecule( IconTitleSubtitleMolecule(
modifier = Modifier.padding(top = 16.dp, bottom = 40.dp, start = 16.dp, end = 16.dp), modifier = Modifier.padding(top = 16.dp, bottom = 40.dp, start = 16.dp, end = 16.dp),
iconImageVector = CompoundIcons.Search, iconImageVector = CompoundIcons.Search(),
title = stringResource(id = R.string.screen_account_provider_form_title), title = stringResource(id = R.string.screen_account_provider_form_title),
subTitle = stringResource(id = R.string.screen_account_provider_form_subtitle), subTitle = stringResource(id = R.string.screen_account_provider_form_subtitle),
) )
@ -139,7 +139,7 @@ fun SearchAccountProviderView(
eventSink(SearchAccountProviderEvents.UserInput("")) eventSink(SearchAccountProviderEvents.UserInput(""))
}) { }) {
Icon( Icon(
imageVector = CompoundIcons.Close, imageVector = CompoundIcons.Close(),
contentDescription = stringResource(CommonStrings.action_clear) contentDescription = stringResource(CommonStrings.action_clear)
) )
} }

View file

@ -24,12 +24,11 @@ import androidx.compose.foundation.layout.padding
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.graphics.vector.ImageVector
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
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.theme.ElementTheme
import io.element.android.compound.tokens.generated.CompoundIcons
import io.element.android.features.logout.impl.tools.isBackingUp import io.element.android.features.logout.impl.tools.isBackingUp
import io.element.android.features.logout.impl.ui.LogoutActionDialog import io.element.android.features.logout.impl.ui.LogoutActionDialog
import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncAction
@ -41,7 +40,6 @@ import io.element.android.libraries.designsystem.theme.components.LinearProgress
import io.element.android.libraries.designsystem.theme.components.OutlinedButton import io.element.android.libraries.designsystem.theme.components.OutlinedButton
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.theme.progressIndicatorTrackColor import io.element.android.libraries.designsystem.theme.progressIndicatorTrackColor
import io.element.android.libraries.designsystem.utils.CommonDrawables
import io.element.android.libraries.matrix.api.encryption.BackupState import io.element.android.libraries.matrix.api.encryption.BackupState
import io.element.android.libraries.matrix.api.encryption.BackupUploadState import io.element.android.libraries.matrix.api.encryption.BackupUploadState
import io.element.android.libraries.matrix.api.encryption.RecoveryState import io.element.android.libraries.matrix.api.encryption.RecoveryState
@ -64,7 +62,7 @@ fun LogoutView(
onBackClicked = onBackClicked, onBackClicked = onBackClicked,
title = title(state), title = title(state),
subTitle = subtitle(state), subTitle = subtitle(state),
iconVector = ImageVector.vectorResource(CommonDrawables.ic_key), iconVector = CompoundIcons.KeySolid(),
modifier = modifier, modifier = modifier,
content = { Content(state) }, content = { Content(state) },
buttons = { buttons = {

View file

@ -481,7 +481,7 @@ private fun MessagesViewTopBar(
} else { } else {
IconButton(onClick = onJoinCallClicked, enabled = callState != RoomCallState.DISABLED) { IconButton(onClick = onJoinCallClicked, enabled = callState != RoomCallState.DISABLED) {
Icon( Icon(
imageVector = CompoundIcons.VideoCallSolid, imageVector = CompoundIcons.VideoCallSolid(),
contentDescription = stringResource(CommonStrings.a11y_start_call), contentDescription = stringResource(CommonStrings.a11y_start_call),
) )
} }
@ -507,7 +507,7 @@ private fun JoinCallMenuItem(
) { ) {
Icon( Icon(
modifier = Modifier.size(20.dp), modifier = Modifier.size(20.dp),
imageVector = CompoundIcons.VideoCallSolid, imageVector = CompoundIcons.VideoCallSolid(),
contentDescription = null contentDescription = null
) )
Spacer(Modifier.width(8.dp)) Spacer(Modifier.width(8.dp))

View file

@ -53,6 +53,7 @@ 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.theme.ElementTheme
import io.element.android.compound.tokens.generated.CompoundIcons
import io.element.android.features.messages.impl.actionlist.model.TimelineItemAction import io.element.android.features.messages.impl.actionlist.model.TimelineItemAction
import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.features.messages.impl.timeline.model.TimelineItem
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemAudioContent import io.element.android.features.messages.impl.timeline.model.event.TimelineItemAudioContent
@ -83,7 +84,6 @@ import io.element.android.libraries.designsystem.theme.components.ListItemStyle
import io.element.android.libraries.designsystem.theme.components.ModalBottomSheet import io.element.android.libraries.designsystem.theme.components.ModalBottomSheet
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.theme.components.hide import io.element.android.libraries.designsystem.theme.components.hide
import io.element.android.libraries.designsystem.utils.CommonDrawables
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.ImmutableList
@ -316,7 +316,7 @@ private fun EmojiReactionsRow(
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
) { ) {
Icon( Icon(
resourceId = CommonDrawables.ic_add_reaction, 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 = MaterialTheme.colorScheme.secondary,
modifier = Modifier modifier = Modifier

View file

@ -29,13 +29,13 @@ sealed class TimelineItemAction(
@DrawableRes val icon: Int, @DrawableRes val icon: Int,
val destructive: Boolean = false val destructive: Boolean = false
) { ) {
data object Forward : TimelineItemAction(CommonStrings.action_forward, CommonDrawables.ic_forward) data object Forward : TimelineItemAction(CommonStrings.action_forward, CompoundDrawables.ic_compound_forward)
data object Copy : TimelineItemAction(CommonStrings.action_copy, CommonDrawables.ic_copy) data object Copy : TimelineItemAction(CommonStrings.action_copy, CompoundDrawables.ic_compound_copy)
data object Redact : TimelineItemAction(CommonStrings.action_remove, CompoundDrawables.ic_delete, destructive = true) data object Redact : TimelineItemAction(CommonStrings.action_remove, CompoundDrawables.ic_compound_delete, destructive = true)
data object Reply : TimelineItemAction(CommonStrings.action_reply, CommonDrawables.ic_reply) data object Reply : TimelineItemAction(CommonStrings.action_reply, CompoundDrawables.ic_compound_reply)
data object ReplyInThread : TimelineItemAction(CommonStrings.action_reply_in_thread, CommonDrawables.ic_reply) data object ReplyInThread : TimelineItemAction(CommonStrings.action_reply_in_thread, CompoundDrawables.ic_compound_reply)
data object Edit : TimelineItemAction(CommonStrings.action_edit, CommonDrawables.ic_edit_outline) data object Edit : TimelineItemAction(CommonStrings.action_edit, CompoundDrawables.ic_compound_edit)
data object ViewSource : TimelineItemAction(CommonStrings.action_view_source, CommonDrawables.ic_developer_options) data object ViewSource : TimelineItemAction(CommonStrings.action_view_source, CommonDrawables.ic_developer_options)
data object ReportContent : TimelineItemAction(CommonStrings.action_report_content, CompoundDrawables.ic_chat_problem, destructive = true) data object ReportContent : TimelineItemAction(CommonStrings.action_report_content, CompoundDrawables.ic_compound_chat_problem, destructive = true)
data object EndPoll : TimelineItemAction(CommonStrings.action_end_poll, CompoundDrawables.ic_polls_end) data object EndPoll : TimelineItemAction(CommonStrings.action_end_poll, CompoundDrawables.ic_compound_polls_end)
} }

View file

@ -43,7 +43,6 @@ 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.ListItemStyle
import io.element.android.libraries.designsystem.theme.components.ModalBottomSheet import io.element.android.libraries.designsystem.theme.components.ModalBottomSheet
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.utils.CommonDrawables
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
@ -109,25 +108,25 @@ private fun AttachmentSourcePickerMenu(
) { ) {
ListItem( ListItem(
modifier = Modifier.clickable { state.eventSink(MessageComposerEvents.PickAttachmentSource.FromGallery) }, modifier = Modifier.clickable { state.eventSink(MessageComposerEvents.PickAttachmentSource.FromGallery) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_image)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Image())),
headlineContent = { Text(stringResource(R.string.screen_room_attachment_source_gallery)) }, headlineContent = { Text(stringResource(R.string.screen_room_attachment_source_gallery)) },
style = ListItemStyle.Primary, style = ListItemStyle.Primary,
) )
ListItem( ListItem(
modifier = Modifier.clickable { state.eventSink(MessageComposerEvents.PickAttachmentSource.FromFiles) }, modifier = Modifier.clickable { state.eventSink(MessageComposerEvents.PickAttachmentSource.FromFiles) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_attachment)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Attachment())),
headlineContent = { Text(stringResource(R.string.screen_room_attachment_source_files)) }, headlineContent = { Text(stringResource(R.string.screen_room_attachment_source_files)) },
style = ListItemStyle.Primary, style = ListItemStyle.Primary,
) )
ListItem( ListItem(
modifier = Modifier.clickable { state.eventSink(MessageComposerEvents.PickAttachmentSource.PhotoFromCamera) }, modifier = Modifier.clickable { state.eventSink(MessageComposerEvents.PickAttachmentSource.PhotoFromCamera) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_take_photo_camera)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.TakePhoto())),
headlineContent = { Text(stringResource(R.string.screen_room_attachment_source_camera_photo)) }, headlineContent = { Text(stringResource(R.string.screen_room_attachment_source_camera_photo)) },
style = ListItemStyle.Primary, style = ListItemStyle.Primary,
) )
ListItem( ListItem(
modifier = Modifier.clickable { state.eventSink(MessageComposerEvents.PickAttachmentSource.VideoFromCamera) }, modifier = Modifier.clickable { state.eventSink(MessageComposerEvents.PickAttachmentSource.VideoFromCamera) },
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.VideoCall)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.VideoCall())),
headlineContent = { Text(stringResource(R.string.screen_room_attachment_source_camera_video)) }, headlineContent = { Text(stringResource(R.string.screen_room_attachment_source_camera_video)) },
style = ListItemStyle.Primary, style = ListItemStyle.Primary,
) )
@ -137,7 +136,7 @@ private fun AttachmentSourcePickerMenu(
state.eventSink(MessageComposerEvents.PickAttachmentSource.Location) state.eventSink(MessageComposerEvents.PickAttachmentSource.Location)
onSendLocationClicked() onSendLocationClicked()
}, },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_location_pin)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.LocationPin())),
headlineContent = { Text(stringResource(R.string.screen_room_attachment_source_location)) }, headlineContent = { Text(stringResource(R.string.screen_room_attachment_source_location)) },
style = ListItemStyle.Primary, style = ListItemStyle.Primary,
) )
@ -148,7 +147,7 @@ private fun AttachmentSourcePickerMenu(
state.eventSink(MessageComposerEvents.PickAttachmentSource.Poll) state.eventSink(MessageComposerEvents.PickAttachmentSource.Poll)
onCreatePollClicked() onCreatePollClicked()
}, },
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Polls)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Polls())),
headlineContent = { Text(stringResource(R.string.screen_room_attachment_source_poll)) }, headlineContent = { Text(stringResource(R.string.screen_room_attachment_source_poll)) },
style = ListItemStyle.Primary, style = ListItemStyle.Primary,
) )
@ -156,7 +155,7 @@ private fun AttachmentSourcePickerMenu(
if (enableTextFormatting) { if (enableTextFormatting) {
ListItem( ListItem(
modifier = Modifier.clickable { state.eventSink(MessageComposerEvents.ToggleTextFormatting(enabled = true)) }, modifier = Modifier.clickable { state.eventSink(MessageComposerEvents.ToggleTextFormatting(enabled = true)) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_text_formatting, null)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.TextFormatting())),
headlineContent = { Text(stringResource(R.string.screen_room_attachment_text_formatting)) }, headlineContent = { Text(stringResource(R.string.screen_room_attachment_text_formatting)) },
style = ListItemStyle.Primary, style = ListItemStyle.Primary,
) )

View file

@ -246,7 +246,7 @@ private fun JumpToBottomButton(
modifier = Modifier modifier = Modifier
.size(24.dp) .size(24.dp)
.rotate(90f), .rotate(90f),
imageVector = CompoundIcons.ArrowRight, imageVector = CompoundIcons.ArrowRight(),
contentDescription = stringResource(id = CommonStrings.a11y_jump_to_bottom) contentDescription = stringResource(id = CommonStrings.a11y_jump_to_bottom)
) )
} }

View file

@ -49,13 +49,13 @@ import io.element.android.features.messages.impl.R
import io.element.android.features.messages.impl.timeline.model.AggregatedReaction import io.element.android.features.messages.impl.timeline.model.AggregatedReaction
import io.element.android.features.messages.impl.timeline.model.AggregatedReactionProvider import io.element.android.features.messages.impl.timeline.model.AggregatedReactionProvider
import io.element.android.features.messages.impl.timeline.model.aTimelineItemReactions import io.element.android.features.messages.impl.timeline.model.aTimelineItemReactions
import io.element.android.libraries.designsystem.icons.CompoundDrawables
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
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.Surface import io.element.android.libraries.designsystem.theme.components.Surface
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.utils.CommonDrawables
import io.element.android.libraries.matrix.api.media.MediaSource import io.element.android.libraries.matrix.api.media.MediaSource
import io.element.android.libraries.matrix.ui.media.MediaRequestData import io.element.android.libraries.matrix.ui.media.MediaRequestData
@ -193,7 +193,7 @@ internal fun MessagesReactionButtonPreview(@PreviewParameter(AggregatedReactionP
@Composable @Composable
internal fun MessagesAddReactionButtonPreview() = ElementPreview { internal fun MessagesAddReactionButtonPreview() = ElementPreview {
MessagesReactionButton( MessagesReactionButton(
content = MessagesReactionsButtonContent.Icon(CommonDrawables.ic_add_reaction), content = MessagesReactionsButtonContent.Icon(CompoundDrawables.ic_compound_reaction_add),
onClick = {}, onClick = {},
onLongClick = {} onLongClick = {}
) )

View file

@ -25,10 +25,10 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.compound.tokens.generated.CompoundIcons
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
import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.Icon
import io.element.android.libraries.designsystem.utils.CommonDrawables
/** /**
* A swipe indicator that appears when swiping to reply to a message. * A swipe indicator that appears when swiping to reply to a message.
@ -49,7 +49,7 @@ fun RowScope.ReplySwipeIndicator(
alpha = swipeProgress() alpha = swipeProgress()
}, },
contentDescription = null, contentDescription = null,
resourceId = CommonDrawables.ic_reply, imageVector = CompoundIcons.Reply(),
) )
} }

View file

@ -91,7 +91,7 @@ fun TimelineEventTimestampView(
if (hasMessageSendingFailed && tint != null) { if (hasMessageSendingFailed && tint != null) {
Spacer(modifier = Modifier.width(2.dp)) Spacer(modifier = Modifier.width(2.dp))
Icon( Icon(
imageVector = CompoundIcons.Error, imageVector = CompoundIcons.Error(),
contentDescription = stringResource(id = CommonStrings.common_sending_failed), contentDescription = stringResource(id = CommonStrings.common_sending_failed),
tint = tint, tint = tint,
modifier = Modifier.size(15.dp, 18.dp), modifier = Modifier.size(15.dp, 18.dp),

View file

@ -435,7 +435,7 @@ private fun MessageEventBubbleContent(
) { ) {
Icon( Icon(
modifier = Modifier.height(14.dp), modifier = Modifier.height(14.dp),
imageVector = CompoundIcons.Threads, imageVector = CompoundIcons.Threads(),
contentDescription = null, contentDescription = null,
tint = ElementTheme.colors.iconSecondary, tint = ElementTheme.colors.iconSecondary,
) )

View file

@ -26,9 +26,9 @@ import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.IntOffset
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.features.messages.impl.R import io.element.android.features.messages.impl.R
import io.element.android.libraries.designsystem.icons.CompoundDrawables
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
import io.element.android.libraries.designsystem.utils.CommonDrawables
/** /**
* A flow layout for reactions that will show a collapse/expand button when the layout wraps over a defined number of rows. * A flow layout for reactions that will show a collapse/expand button when the layout wraps over a defined number of rows.
@ -195,7 +195,7 @@ internal fun TimelineItemReactionsLayoutPreview() = ElementPreview {
}, },
addMoreButton = { addMoreButton = {
MessagesReactionButton( MessagesReactionButton(
content = MessagesReactionsButtonContent.Icon(CommonDrawables.ic_add_reaction), content = MessagesReactionsButtonContent.Icon(CompoundDrawables.ic_compound_reaction_add),
onClick = {}, onClick = {},
onLongClick = {} onLongClick = {}
) )

View file

@ -31,9 +31,9 @@ import io.element.android.features.messages.impl.R
import io.element.android.features.messages.impl.timeline.aTimelineItemReactions import io.element.android.features.messages.impl.timeline.aTimelineItemReactions
import io.element.android.features.messages.impl.timeline.model.AggregatedReaction import io.element.android.features.messages.impl.timeline.model.AggregatedReaction
import io.element.android.features.messages.impl.timeline.model.TimelineItemReactions import io.element.android.features.messages.impl.timeline.model.TimelineItemReactions
import io.element.android.libraries.designsystem.icons.CompoundDrawables
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
import io.element.android.libraries.designsystem.utils.CommonDrawables
import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.ImmutableList
@Composable @Composable
@ -99,7 +99,7 @@ private fun TimelineItemReactionsView(
addMoreButton = if (userCanSendReaction) { addMoreButton = if (userCanSendReaction) {
{ {
MessagesReactionButton( MessagesReactionButton(
content = MessagesReactionsButtonContent.Icon(CommonDrawables.ic_add_reaction), content = MessagesReactionsButtonContent.Icon(CompoundDrawables.ic_compound_reaction_add),
onClick = onMoreReactionsClick, onClick = onMoreReactionsClick,
onLongClick = {} onLongClick = {}
) )

View file

@ -21,9 +21,9 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import io.element.android.features.messages.impl.timeline.components.layout.ContentAvoidingLayoutData import io.element.android.features.messages.impl.timeline.components.layout.ContentAvoidingLayoutData
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemEncryptedContent import io.element.android.features.messages.impl.timeline.model.event.TimelineItemEncryptedContent
import io.element.android.libraries.designsystem.icons.CompoundDrawables
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
import io.element.android.libraries.designsystem.utils.CommonDrawables
import io.element.android.libraries.matrix.api.timeline.item.event.UnableToDecryptContent import io.element.android.libraries.matrix.api.timeline.item.event.UnableToDecryptContent
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
@ -36,7 +36,7 @@ fun TimelineItemEncryptedView(
TimelineItemInformativeView( TimelineItemInformativeView(
text = stringResource(id = CommonStrings.common_waiting_for_decryption_key), text = stringResource(id = CommonStrings.common_waiting_for_decryption_key),
iconDescription = stringResource(id = CommonStrings.dialog_title_warning), iconDescription = stringResource(id = CommonStrings.dialog_title_warning),
iconResourceId = CommonDrawables.ic_waiting_to_decrypt, iconResourceId = CompoundDrawables.ic_compound_time,
onContentLayoutChanged = onContentLayoutChanged, onContentLayoutChanged = onContentLayoutChanged,
modifier = modifier modifier = modifier
) )

View file

@ -37,11 +37,11 @@ import io.element.android.features.messages.impl.timeline.components.layout.Cont
import io.element.android.features.messages.impl.timeline.components.layout.ContentAvoidingLayoutData import io.element.android.features.messages.impl.timeline.components.layout.ContentAvoidingLayoutData
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemFileContent import io.element.android.features.messages.impl.timeline.model.event.TimelineItemFileContent
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemFileContentProvider import io.element.android.features.messages.impl.timeline.model.event.TimelineItemFileContentProvider
import io.element.android.libraries.designsystem.icons.CompoundDrawables
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
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
import io.element.android.libraries.designsystem.utils.CommonDrawables
@Composable @Composable
fun TimelineItemFileView( fun TimelineItemFileView(
@ -62,7 +62,7 @@ fun TimelineItemFileView(
contentAlignment = Alignment.Center, contentAlignment = Alignment.Center,
) { ) {
Icon( Icon(
resourceId = CommonDrawables.ic_attachment, resourceId = CompoundDrawables.ic_compound_attachment,
contentDescription = null, contentDescription = null,
tint = ElementTheme.materialColors.primary, tint = ElementTheme.materialColors.primary,
modifier = Modifier modifier = Modifier

View file

@ -77,7 +77,7 @@ internal fun TimelineItemInformativeViewPreview() = ElementPreview {
TimelineItemInformativeView( TimelineItemInformativeView(
text = "Info", text = "Info",
iconDescription = "", iconDescription = "",
iconResourceId = CompoundDrawables.ic_delete, iconResourceId = CompoundDrawables.ic_compound_delete,
onContentLayoutChanged = {}, onContentLayoutChanged = {},
) )
} }

View file

@ -35,7 +35,7 @@ fun TimelineItemRedactedView(
TimelineItemInformativeView( TimelineItemInformativeView(
text = stringResource(id = CommonStrings.common_message_removed), text = stringResource(id = CommonStrings.common_message_removed),
iconDescription = stringResource(id = CommonStrings.common_message_removed), iconDescription = stringResource(id = CommonStrings.common_message_removed),
iconResourceId = CompoundDrawables.ic_delete, iconResourceId = CompoundDrawables.ic_compound_delete,
onContentLayoutChanged = onContentLayoutChanged, onContentLayoutChanged = onContentLayoutChanged,
modifier = modifier modifier = modifier
) )

View file

@ -35,7 +35,7 @@ fun TimelineItemUnknownView(
TimelineItemInformativeView( TimelineItemInformativeView(
text = stringResource(id = CommonStrings.common_unsupported_event), text = stringResource(id = CommonStrings.common_unsupported_event),
iconDescription = stringResource(id = CommonStrings.dialog_title_warning), iconDescription = stringResource(id = CommonStrings.dialog_title_warning),
iconResourceId = CompoundDrawables.ic_info_solid, iconResourceId = CompoundDrawables.ic_compound_info_solid,
onContentLayoutChanged = onContentLayoutChanged, onContentLayoutChanged = onContentLayoutChanged,
modifier = modifier modifier = modifier
) )

View file

@ -34,6 +34,7 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.layout.onSizeChanged import androidx.compose.ui.layout.onSizeChanged
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
@ -44,6 +45,7 @@ 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.theme.ElementTheme
import io.element.android.compound.tokens.generated.CompoundIcons
import io.element.android.features.messages.impl.timeline.components.layout.ContentAvoidingLayoutData import io.element.android.features.messages.impl.timeline.components.layout.ContentAvoidingLayoutData
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemVoiceContent import io.element.android.features.messages.impl.timeline.model.event.TimelineItemVoiceContent
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemVoiceContentProvider import io.element.android.features.messages.impl.timeline.model.event.TimelineItemVoiceContentProvider
@ -58,7 +60,6 @@ import io.element.android.libraries.designsystem.theme.components.CircularProgre
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.IconButton import io.element.android.libraries.designsystem.theme.components.IconButton
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.utils.CommonDrawables
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
@ -126,8 +127,8 @@ private fun PlayButton(
onClick = onClick, onClick = onClick,
enabled = enabled, enabled = enabled,
) { ) {
Icon( ControlIcon(
resourceId = CommonDrawables.ic_play, imageVector = CompoundIcons.PlaySolid(),
contentDescription = stringResource(id = CommonStrings.a11y_play), contentDescription = stringResource(id = CommonStrings.a11y_play),
) )
} }
@ -140,8 +141,8 @@ private fun PauseButton(
CustomIconButton( CustomIconButton(
onClick = onClick, onClick = onClick,
) { ) {
Icon( ControlIcon(
resourceId = CommonDrawables.ic_pause, imageVector = CompoundIcons.PauseSolid(),
contentDescription = stringResource(id = CommonStrings.a11y_pause), contentDescription = stringResource(id = CommonStrings.a11y_pause),
) )
} }
@ -154,13 +155,25 @@ private fun RetryButton(
CustomIconButton( CustomIconButton(
onClick = onClick, onClick = onClick,
) { ) {
Icon( ControlIcon(
resourceId = CommonDrawables.ic_retry, imageVector = CompoundIcons.Restart(),
contentDescription = stringResource(id = CommonStrings.action_retry), contentDescription = stringResource(id = CommonStrings.action_retry),
) )
} }
} }
@Composable
private fun ControlIcon(
imageVector: ImageVector,
contentDescription: String?,
) {
Icon(
modifier = Modifier.padding(vertical = 10.dp),
imageVector = imageVector,
contentDescription = contentDescription,
)
}
/** /**
* Progress button is shown when the voice message is being downloaded. * Progress button is shown when the voice message is being downloaded.
* *
@ -190,8 +203,8 @@ private fun ProgressButton(
strokeWidth = 2.dp, strokeWidth = 2.dp,
) )
} else { } else {
Icon( ControlIcon(
resourceId = CommonDrawables.ic_pause, imageVector = CompoundIcons.PauseSolid(),
contentDescription = stringResource(id = CommonStrings.a11y_pause), contentDescription = stringResource(id = CommonStrings.a11y_pause),
) )
} }

View file

@ -89,7 +89,7 @@ fun GroupHeaderView(
) )
Icon( Icon(
modifier = Modifier.rotate(rotation), modifier = Modifier.rotate(rotation),
imageVector = CompoundIcons.ChevronRight, imageVector = CompoundIcons.ChevronRight(),
contentDescription = null, contentDescription = null,
tint = MaterialTheme.colorScheme.secondary tint = MaterialTheme.colorScheme.secondary
) )

View file

@ -41,6 +41,7 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.zIndex import androidx.compose.ui.zIndex
import io.element.android.appconfig.TimelineConfig import io.element.android.appconfig.TimelineConfig
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.features.messages.impl.timeline.model.ReadReceiptData import io.element.android.features.messages.impl.timeline.model.ReadReceiptData
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.AvatarSize import io.element.android.libraries.designsystem.components.avatar.AvatarSize
@ -49,7 +50,6 @@ import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight 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.Icon
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.utils.CommonDrawables
import io.element.android.libraries.matrix.api.timeline.item.event.LocalEventSendState import io.element.android.libraries.matrix.api.timeline.item.event.LocalEventSendState
import io.element.android.libraries.testtags.TestTags import io.element.android.libraries.testtags.TestTags
import io.element.android.libraries.testtags.testTag import io.element.android.libraries.testtags.testTag
@ -85,7 +85,7 @@ fun TimelineItemReadReceiptView(
ReadReceiptsRow(modifier) { ReadReceiptsRow(modifier) {
Icon( Icon(
modifier = Modifier.padding(2.dp), modifier = Modifier.padding(2.dp),
resourceId = CommonDrawables.ic_sending, imageVector = CompoundIcons.Circle(),
contentDescription = stringResource(id = CommonStrings.common_sending), contentDescription = stringResource(id = CommonStrings.common_sending),
tint = ElementTheme.colors.iconSecondary tint = ElementTheme.colors.iconSecondary
) )
@ -101,7 +101,7 @@ fun TimelineItemReadReceiptView(
ReadReceiptsRow(modifier = modifier) { ReadReceiptsRow(modifier = modifier) {
Icon( Icon(
modifier = Modifier.padding(2.dp), modifier = Modifier.padding(2.dp),
resourceId = CommonDrawables.ic_sent, imageVector = CompoundIcons.CheckCircle(),
contentDescription = stringResource(id = CommonStrings.common_sent), contentDescription = stringResource(id = CommonStrings.common_sent),
tint = ElementTheme.colors.iconSecondary tint = ElementTheme.colors.iconSecondary
) )

View file

@ -56,7 +56,7 @@ fun TimelineEncryptedHistoryBannerView(
) { ) {
Icon( Icon(
modifier = Modifier.size(20.dp), modifier = Modifier.size(20.dp),
imageVector = CompoundIcons.InfoSolid, imageVector = CompoundIcons.InfoSolid(),
contentDescription = null, contentDescription = null,
tint = ElementTheme.colors.iconInfoPrimary tint = ElementTheme.colors.iconInfoPrimary
) )

View file

@ -139,7 +139,7 @@ private fun CollapsibleSection(
Text(title, modifier = Modifier.weight(1f)) Text(title, modifier = Modifier.weight(1f))
Icon( Icon(
modifier = Modifier.rotate(if (isExpanded) 180f else 0f), modifier = Modifier.rotate(if (isExpanded) 180f else 0f),
imageVector = CompoundIcons.ChevronDown, imageVector = CompoundIcons.ChevronDown(),
contentDescription = null contentDescription = null
) )
} }

View file

@ -54,7 +54,7 @@ internal fun Indicator(
) { ) {
val tint = MaterialTheme.colorScheme.primary val tint = MaterialTheme.colorScheme.primary
Icon( Icon(
imageVector = CompoundIcons.Offline, imageVector = CompoundIcons.Offline(),
contentDescription = null, contentDescription = null,
tint = tint, tint = tint,
modifier = Modifier.size(16.sp.toDp()), modifier = Modifier.size(16.sp.toDp()),

View file

@ -142,7 +142,7 @@ private fun OnBoardingContent(
onClick = onOpenDeveloperSettings, onClick = onOpenDeveloperSettings,
) { ) {
Icon( Icon(
imageVector = CompoundIcons.SettingsSolid, imageVector = CompoundIcons.SettingsSolid(),
contentDescription = stringResource(CommonStrings.common_settings) contentDescription = stringResource(CommonStrings.common_settings)
) )
} }

View file

@ -149,13 +149,13 @@ private fun PollTitle(
) { ) {
if (isPollEnded) { if (isPollEnded) {
Icon( Icon(
imageVector = CompoundIcons.PollsEnd, imageVector = CompoundIcons.PollsEnd(),
contentDescription = stringResource(id = CommonStrings.a11y_poll_end), contentDescription = stringResource(id = CommonStrings.a11y_poll_end),
modifier = Modifier.size(22.dp) modifier = Modifier.size(22.dp)
) )
} else { } else {
Icon( Icon(
imageVector = CompoundIcons.Polls, imageVector = CompoundIcons.Polls(),
contentDescription = stringResource(id = CommonStrings.a11y_poll), contentDescription = stringResource(id = CommonStrings.a11y_poll),
modifier = Modifier.size(22.dp) modifier = Modifier.size(22.dp)
) )

View file

@ -162,7 +162,7 @@ fun CreatePollView(
}, },
trailingContent = ListItemContent.Custom { trailingContent = ListItemContent.Custom {
Icon( Icon(
imageVector = CompoundIcons.Delete, imageVector = CompoundIcons.Delete(),
contentDescription = null, contentDescription = null,
modifier = Modifier.clickable(answer.canDelete) { modifier = Modifier.clickable(answer.canDelete) {
state.eventSink(CreatePollEvents.RemoveAnswer(index)) state.eventSink(CreatePollEvents.RemoveAnswer(index))

View file

@ -90,7 +90,7 @@ fun ConfigureTracingView(
onClick = { showMenu = !showMenu } onClick = { showMenu = !showMenu }
) { ) {
Icon( Icon(
imageVector = CompoundIcons.OverflowVertical, imageVector = CompoundIcons.OverflowVertical(),
tint = ElementTheme.materialColors.secondary, tint = ElementTheme.materialColors.secondary,
contentDescription = null, contentDescription = null,
) )
@ -107,7 +107,7 @@ fun ConfigureTracingView(
text = { Text("Reset to default") }, text = { Text("Reset to default") },
leadingIcon = { leadingIcon = {
Icon( Icon(
imageVector = CompoundIcons.Delete, imageVector = CompoundIcons.Delete(),
tint = ElementTheme.materialColors.secondary, tint = ElementTheme.materialColors.secondary,
contentDescription = null, contentDescription = null,
) )
@ -203,7 +203,7 @@ private fun LogLevelDropdownMenu(
trailingIcon = { trailingIcon = {
Icon( Icon(
modifier = Modifier.rotate(if (expanded) 180f else 0f), modifier = Modifier.rotate(if (expanded) 180f else 0f),
imageVector = CompoundIcons.ChevronDown, imageVector = CompoundIcons.ChevronDown(),
contentDescription = null, contentDescription = null,
) )
}, },

View file

@ -103,7 +103,7 @@ private fun NotificationSettingsContentView(
val context = LocalContext.current val context = LocalContext.current
if (systemSettings.appNotificationsEnabled && !systemSettings.systemNotificationsEnabled) { if (systemSettings.appNotificationsEnabled && !systemSettings.systemNotificationsEnabled) {
PreferenceText( PreferenceText(
icon = CompoundIcons.NotificationsSolidOff, icon = CompoundIcons.NotificationsOffSolid(),
title = stringResource(id = R.string.screen_notification_settings_system_notifications_turned_off), title = stringResource(id = R.string.screen_notification_settings_system_notifications_turned_off),
subtitle = stringResource( subtitle = stringResource(
id = R.string.screen_notification_settings_system_notifications_action_required, id = R.string.screen_notification_settings_system_notifications_action_required,

View file

@ -19,8 +19,6 @@ package io.element.android.features.preferences.impl.root
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
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.material.icons.Icons
import androidx.compose.material.icons.outlined.InsertChart
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -85,14 +83,14 @@ fun PreferencesRootView(
if (state.showCompleteVerification) { if (state.showCompleteVerification) {
ListItem( ListItem(
headlineContent = { Text(text = stringResource(CommonStrings.common_verify_device)) }, headlineContent = { Text(text = stringResource(CommonStrings.common_verify_device)) },
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.CheckCircle)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.CheckCircle())),
onClick = onVerifyClicked onClick = onVerifyClicked
) )
} }
if (state.showSecureBackup) { if (state.showSecureBackup) {
ListItem( ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.common_chat_backup)) }, headlineContent = { Text(stringResource(id = CommonStrings.common_chat_backup)) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_key_filled)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.KeySolid())),
trailingContent = ListItemContent.Badge.takeIf { state.showSecureBackupBadge }, trailingContent = ListItemContent.Badge.takeIf { state.showSecureBackupBadge },
onClick = onSecureBackupClicked, onClick = onSecureBackupClicked,
) )
@ -103,8 +101,8 @@ fun PreferencesRootView(
if (state.accountManagementUrl != null) { if (state.accountManagementUrl != null) {
ListItem( ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.action_manage_account)) }, headlineContent = { Text(stringResource(id = CommonStrings.action_manage_account)) },
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.UserProfile)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.UserProfile())),
trailingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.PopOut)), trailingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.PopOut())),
onClick = { onManageAccountClicked(state.accountManagementUrl) }, onClick = { onManageAccountClicked(state.accountManagementUrl) },
) )
HorizontalDivider() HorizontalDivider()
@ -112,31 +110,31 @@ fun PreferencesRootView(
if (state.showAnalyticsSettings) { if (state.showAnalyticsSettings) {
ListItem( ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.common_analytics)) }, headlineContent = { Text(stringResource(id = CommonStrings.common_analytics)) },
leadingContent = ListItemContent.Icon(IconSource.Vector(Icons.Outlined.InsertChart)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Chart())),
onClick = onOpenAnalytics, onClick = onOpenAnalytics,
) )
} }
if (state.showNotificationSettings) { if (state.showNotificationSettings) {
ListItem( ListItem(
headlineContent = { Text(stringResource(id = R.string.screen_notification_settings_title)) }, headlineContent = { Text(stringResource(id = R.string.screen_notification_settings_title)) },
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Notifications)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Notifications())),
onClick = onOpenNotificationSettings, onClick = onOpenNotificationSettings,
) )
} }
ListItem( ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.common_report_a_problem)) }, headlineContent = { Text(stringResource(id = CommonStrings.common_report_a_problem)) },
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.ChatProblem)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.ChatProblem())),
onClick = onOpenRageShake onClick = onOpenRageShake
) )
ListItem( ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.common_about)) }, headlineContent = { Text(stringResource(id = CommonStrings.common_about)) },
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Info)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Info())),
onClick = onOpenAbout, onClick = onOpenAbout,
) )
if (state.showLockScreenSettings) { if (state.showLockScreenSettings) {
ListItem( ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.common_screen_lock)) }, headlineContent = { Text(stringResource(id = CommonStrings.common_screen_lock)) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_lock_outline)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Lock())),
onClick = onOpenLockScreenSettings, onClick = onOpenLockScreenSettings,
) )
} }
@ -144,15 +142,15 @@ fun PreferencesRootView(
if (state.devicesManagementUrl != null) { if (state.devicesManagementUrl != null) {
ListItem( ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.action_manage_devices)) }, headlineContent = { Text(stringResource(id = CommonStrings.action_manage_devices)) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_devices)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Devices())),
trailingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.PopOut)), trailingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.PopOut())),
onClick = { onManageAccountClicked(state.devicesManagementUrl) }, onClick = { onManageAccountClicked(state.devicesManagementUrl) },
) )
HorizontalDivider() HorizontalDivider()
} }
ListItem( ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.common_advanced_settings)) }, headlineContent = { Text(stringResource(id = CommonStrings.common_advanced_settings)) },
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Settings)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Settings())),
onClick = onOpenAdvancedSettings, onClick = onOpenAdvancedSettings,
) )
if (state.showDeveloperSettings) { if (state.showDeveloperSettings) {
@ -161,7 +159,7 @@ fun PreferencesRootView(
HorizontalDivider() HorizontalDivider()
ListItem( ListItem(
headlineContent = { Text(stringResource(id = CommonStrings.action_signout)) }, headlineContent = { Text(stringResource(id = CommonStrings.action_signout)) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_sign_out)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.SignOut())),
style = ListItemStyle.Destructive, style = ListItemStyle.Destructive,
onClick = onSignOutClicked, onClick = onSignOutClicked,
) )

View file

@ -248,7 +248,7 @@ private fun MainActionsSection(
if (roomNotificationSettings.mode == RoomNotificationMode.MUTE) { if (roomNotificationSettings.mode == RoomNotificationMode.MUTE) {
MainActionButton( MainActionButton(
title = stringResource(CommonStrings.common_unmute), title = stringResource(CommonStrings.common_unmute),
imageVector = CompoundIcons.NotificationsOff, imageVector = CompoundIcons.NotificationsOff(),
onClick = { onClick = {
state.eventSink(RoomDetailsEvent.UnmuteNotification) state.eventSink(RoomDetailsEvent.UnmuteNotification)
}, },
@ -256,7 +256,7 @@ private fun MainActionsSection(
} else { } else {
MainActionButton( MainActionButton(
title = stringResource(CommonStrings.common_mute), title = stringResource(CommonStrings.common_mute),
imageVector = CompoundIcons.Notifications, imageVector = CompoundIcons.Notifications(),
onClick = { onClick = {
state.eventSink(RoomDetailsEvent.MuteNotification) state.eventSink(RoomDetailsEvent.MuteNotification)
}, },
@ -266,7 +266,7 @@ private fun MainActionsSection(
Spacer(modifier = Modifier.width(20.dp)) Spacer(modifier = Modifier.width(20.dp))
MainActionButton( MainActionButton(
title = stringResource(R.string.screen_room_details_share_room_title), title = stringResource(R.string.screen_room_details_share_room_title),
imageVector = CompoundIcons.ShareAndroid, imageVector = CompoundIcons.ShareAndroid(),
onClick = onShareRoom onClick = onShareRoom
) )
} }
@ -350,7 +350,7 @@ private fun NotificationSection(
ListItem( ListItem(
headlineContent = { Text(text = stringResource(R.string.screen_room_details_notification_title)) }, headlineContent = { Text(text = stringResource(R.string.screen_room_details_notification_title)) },
supportingContent = { Text(text = subtitle) }, supportingContent = { Text(text = subtitle) },
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Notifications)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Notifications())),
onClick = openRoomNotificationSettings, onClick = openRoomNotificationSettings,
) )
} }
@ -364,7 +364,7 @@ private fun MembersSection(
PreferenceCategory { PreferenceCategory {
ListItem( ListItem(
headlineContent = { Text(stringResource(CommonStrings.common_people)) }, headlineContent = { Text(stringResource(CommonStrings.common_people)) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_user)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.User())),
trailingContent = ListItemContent.Text(memberCount.toString()), trailingContent = ListItemContent.Text(memberCount.toString()),
onClick = openRoomMemberList, onClick = openRoomMemberList,
) )
@ -378,7 +378,7 @@ private fun InviteSection(
PreferenceCategory { PreferenceCategory {
ListItem( ListItem(
headlineContent = { Text(stringResource(R.string.screen_room_details_invite_people_title)) }, headlineContent = { Text(stringResource(R.string.screen_room_details_invite_people_title)) },
leadingContent = ListItemContent.Icon(IconSource.Resource(CommonDrawables.ic_user_add)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.UserAdd())),
onClick = invitePeople, onClick = invitePeople,
) )
} }
@ -391,7 +391,7 @@ private fun PollsSection(
PreferenceCategory { PreferenceCategory {
ListItem( ListItem(
headlineContent = { Text(stringResource(R.string.screen_polls_history_title)) }, headlineContent = { Text(stringResource(R.string.screen_polls_history_title)) },
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Polls)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Polls())),
onClick = openPollHistory, onClick = openPollHistory,
) )
} }
@ -422,7 +422,7 @@ private fun OtherActionsSection(isDm: Boolean, onLeaveRoom: () -> Unit) {
) )
Text(leaveText) Text(leaveText)
}, },
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Leave)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Leave())),
style = ListItemStyle.Destructive, style = ListItemStyle.Destructive,
onClick = onLeaveRoom, onClick = onLeaveRoom,
) )

View file

@ -82,7 +82,7 @@ private fun PreferenceBlockUser(
if (isBlocked.orFalse()) { if (isBlocked.orFalse()) {
ListItem( ListItem(
headlineContent = { Text(stringResource(R.string.screen_dm_details_unblock_user)) }, headlineContent = { Text(stringResource(R.string.screen_dm_details_unblock_user)) },
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Block)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Block())),
onClick = { if (!isLoading) eventSink(RoomMemberDetailsEvents.UnblockUser(needsConfirmation = true)) }, onClick = { if (!isLoading) eventSink(RoomMemberDetailsEvents.UnblockUser(needsConfirmation = true)) },
trailingContent = if (isLoading) ListItemContent.Custom(loadingCurrentValue) else null, trailingContent = if (isLoading) ListItemContent.Custom(loadingCurrentValue) else null,
style = ListItemStyle.Primary, style = ListItemStyle.Primary,
@ -90,7 +90,7 @@ private fun PreferenceBlockUser(
} else { } else {
ListItem( ListItem(
headlineContent = { Text(stringResource(R.string.screen_dm_details_block_user)) }, headlineContent = { Text(stringResource(R.string.screen_dm_details_block_user)) },
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Block)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Block())),
style = ListItemStyle.Destructive, style = ListItemStyle.Destructive,
onClick = { if (!isLoading) eventSink(RoomMemberDetailsEvents.BlockUser(needsConfirmation = true)) }, onClick = { if (!isLoading) eventSink(RoomMemberDetailsEvents.BlockUser(needsConfirmation = true)) },
trailingContent = if (isLoading) ListItemContent.Custom(loadingCurrentValue) else null, trailingContent = if (isLoading) ListItemContent.Custom(loadingCurrentValue) else null,

View file

@ -111,7 +111,7 @@ private fun StartDMSection(
) { ) {
ListItem( ListItem(
headlineContent = { Text(stringResource(CommonStrings.common_direct_chat)) }, headlineContent = { Text(stringResource(CommonStrings.common_direct_chat)) },
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Chat)), leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Chat())),
style = ListItemStyle.Primary, style = ListItemStyle.Primary,
onClick = onStartDMClicked, onClick = onStartDMClicked,
) )

View file

@ -31,7 +31,7 @@ fun RoomMemberMainActionsSection(onShareUser: () -> Unit, modifier: Modifier = M
Row(modifier.fillMaxWidth(), horizontalArrangement = Arrangement.Center) { Row(modifier.fillMaxWidth(), horizontalArrangement = Arrangement.Center) {
MainActionButton( MainActionButton(
title = stringResource(CommonStrings.action_share), title = stringResource(CommonStrings.action_share),
imageVector = CompoundIcons.ShareAndroid, imageVector = CompoundIcons.ShareAndroid(),
onClick = onShareUser onClick = onShareUser
) )
} }

View file

@ -130,7 +130,7 @@ private fun RoomListModalBottomSheetContent(
modifier = Modifier.clickable { onRoomSettingsClicked() }, modifier = Modifier.clickable { onRoomSettingsClicked() },
leadingContent = ListItemContent.Icon( leadingContent = ListItemContent.Icon(
iconSource = IconSource.Vector( iconSource = IconSource.Vector(
CompoundIcons.Settings, CompoundIcons.Settings(),
contentDescription = stringResource(id = CommonStrings.common_settings) contentDescription = stringResource(id = CommonStrings.common_settings)
) )
), ),
@ -150,7 +150,7 @@ private fun RoomListModalBottomSheetContent(
modifier = Modifier.clickable { onLeaveRoomClicked() }, modifier = Modifier.clickable { onLeaveRoomClicked() },
leadingContent = ListItemContent.Icon( leadingContent = ListItemContent.Icon(
iconSource = IconSource.Vector( iconSource = IconSource.Vector(
CompoundIcons.Leave, CompoundIcons.Leave(),
contentDescription = stringResource(id = CommonStrings.action_leave_room) contentDescription = stringResource(id = CommonStrings.action_leave_room)
) )
), ),

View file

@ -47,6 +47,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.Velocity import androidx.compose.ui.unit.Velocity
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
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.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
import io.element.android.features.roomlist.impl.components.ConfirmRecoveryKeyBanner import io.element.android.features.roomlist.impl.components.ConfirmRecoveryKeyBanner
@ -67,7 +68,6 @@ import io.element.android.libraries.designsystem.theme.components.Icon
import io.element.android.libraries.designsystem.theme.components.IconSource import io.element.android.libraries.designsystem.theme.components.IconSource
import io.element.android.libraries.designsystem.theme.components.Scaffold import io.element.android.libraries.designsystem.theme.components.Scaffold
import io.element.android.libraries.designsystem.theme.components.Text 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 import io.element.android.libraries.designsystem.utils.snackbar.SnackbarHost
import io.element.android.libraries.designsystem.utils.snackbar.rememberSnackbarHostState import io.element.android.libraries.designsystem.utils.snackbar.rememberSnackbarHostState
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
@ -155,7 +155,7 @@ private fun EmptyRoomListView(
Spacer(modifier = Modifier.height(16.dp)) Spacer(modifier = Modifier.height(16.dp))
Button( Button(
text = stringResource(CommonStrings.action_start_chat), text = stringResource(CommonStrings.action_start_chat),
leadingIcon = IconSource.Resource(CommonDrawables.ic_new_message), leadingIcon = IconSource.Vector(CompoundIcons.Compose()),
onClick = onCreateRoomClicked, onClick = onCreateRoomClicked,
) )
} }
@ -284,7 +284,7 @@ private fun RoomListContent(
) { ) {
Icon( Icon(
// Note cannot use Icons.Outlined.EditSquare, it does not exist :/ // Note cannot use Icons.Outlined.EditSquare, it does not exist :/
resourceId = CommonDrawables.ic_new_message, imageVector = CompoundIcons.Compose(),
contentDescription = stringResource(id = R.string.screen_roomlist_a11y_create_message) contentDescription = stringResource(id = R.string.screen_roomlist_a11y_create_message)
) )
} }

View file

@ -234,7 +234,7 @@ private fun DefaultRoomListTopBar(
onClick = onSearchClicked, onClick = onSearchClicked,
) { ) {
Icon( Icon(
imageVector = CompoundIcons.Search, imageVector = CompoundIcons.Search(),
contentDescription = stringResource(CommonStrings.action_search), contentDescription = stringResource(CommonStrings.action_search),
) )
} }
@ -244,7 +244,7 @@ private fun DefaultRoomListTopBar(
onClick = { showMenu = !showMenu } onClick = { showMenu = !showMenu }
) { ) {
Icon( Icon(
imageVector = CompoundIcons.OverflowVertical, imageVector = CompoundIcons.OverflowVertical(),
contentDescription = null, contentDescription = null,
) )
} }
@ -261,7 +261,7 @@ private fun DefaultRoomListTopBar(
text = { Text(stringResource(id = CommonStrings.action_invite)) }, text = { Text(stringResource(id = CommonStrings.action_invite)) },
leadingIcon = { leadingIcon = {
Icon( Icon(
imageVector = CompoundIcons.ShareAndroid, imageVector = CompoundIcons.ShareAndroid(),
tint = ElementTheme.materialColors.secondary, tint = ElementTheme.materialColors.secondary,
contentDescription = null, contentDescription = null,
) )
@ -277,7 +277,7 @@ private fun DefaultRoomListTopBar(
text = { Text(stringResource(id = CommonStrings.common_report_a_problem)) }, text = { Text(stringResource(id = CommonStrings.common_report_a_problem)) },
leadingIcon = { leadingIcon = {
Icon( Icon(
imageVector = CompoundIcons.ChatProblem, imageVector = CompoundIcons.ChatProblem(),
tint = ElementTheme.materialColors.secondary, tint = ElementTheme.materialColors.secondary,
contentDescription = null, contentDescription = null,
) )

View file

@ -197,7 +197,7 @@ private fun OnGoingCallIcon(
) { ) {
Icon( Icon(
modifier = Modifier.size(16.dp), modifier = Modifier.size(16.dp),
imageVector = CompoundIcons.VideoCallSolid, imageVector = CompoundIcons.VideoCallSolid(),
contentDescription = null, contentDescription = null,
tint = color, tint = color,
) )
@ -208,7 +208,7 @@ private fun NotificationOffIndicatorAtom() {
Icon( Icon(
modifier = Modifier.size(16.dp), modifier = Modifier.size(16.dp),
contentDescription = null, contentDescription = null,
imageVector = CompoundIcons.NotificationsSolidOff, imageVector = CompoundIcons.NotificationsOffSolid(),
tint = ElementTheme.colors.iconQuaternary, tint = ElementTheme.colors.iconQuaternary,
) )
} }
@ -218,7 +218,7 @@ private fun MentionIndicatorAtom() {
Icon( Icon(
modifier = Modifier.size(16.dp), modifier = Modifier.size(16.dp),
contentDescription = null, contentDescription = null,
imageVector = CompoundIcons.Mention, imageVector = CompoundIcons.Mention(),
tint = ElementTheme.colors.unreadIndicator, tint = ElementTheme.colors.unreadIndicator,
) )
} }

View file

@ -150,7 +150,7 @@ private fun RoomListSearchResultContent(
state.eventSink(RoomListEvents.UpdateFilter("")) state.eventSink(RoomListEvents.UpdateFilter(""))
}) { }) {
Icon( Icon(
imageVector = CompoundIcons.Close, imageVector = CompoundIcons.Close(),
contentDescription = stringResource(CommonStrings.action_cancel) contentDescription = stringResource(CommonStrings.action_cancel)
) )
} }

View file

@ -25,9 +25,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
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.vector.ImageVector
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
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.theme.ElementTheme
@ -41,7 +39,6 @@ import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.components.Button import io.element.android.libraries.designsystem.theme.components.Button
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
import io.element.android.libraries.designsystem.utils.CommonDrawables
@Composable @Composable
fun SecureBackupDisableView( fun SecureBackupDisableView(
@ -55,7 +52,7 @@ fun SecureBackupDisableView(
onBackClicked = onBackClicked, onBackClicked = onBackClicked,
title = stringResource(id = R.string.screen_key_backup_disable_title), title = stringResource(id = R.string.screen_key_backup_disable_title),
subTitle = stringResource(id = R.string.screen_key_backup_disable_description), subTitle = stringResource(id = R.string.screen_key_backup_disable_description),
iconVector = ImageVector.vectorResource(CommonDrawables.ic_key_off), iconVector = CompoundIcons.KeyOffSolid(),
content = { Content(state = state) }, content = { Content(state = state) },
buttons = { Buttons(state = state) }, buttons = { Buttons(state = state) },
) )
@ -117,7 +114,7 @@ private fun Content(state: SecureBackupDisableState) {
private fun SecureBackupDisableItem(text: String) { private fun SecureBackupDisableItem(text: String) {
Row(modifier = Modifier.fillMaxWidth()) { Row(modifier = Modifier.fillMaxWidth()) {
Icon( Icon(
imageVector = CompoundIcons.Close, imageVector = CompoundIcons.Close(),
contentDescription = null, contentDescription = null,
tint = ElementTheme.colors.iconCriticalPrimary, tint = ElementTheme.colors.iconCriticalPrimary,
modifier = Modifier.size(20.dp) modifier = Modifier.size(20.dp)

View file

@ -20,17 +20,15 @@ import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
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.vector.ImageVector
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import io.element.android.compound.tokens.generated.CompoundIcons
import io.element.android.features.securebackup.impl.R import io.element.android.features.securebackup.impl.R
import io.element.android.libraries.designsystem.atomic.pages.FlowStepPage import io.element.android.libraries.designsystem.atomic.pages.FlowStepPage
import io.element.android.libraries.designsystem.components.async.AsyncActionView import io.element.android.libraries.designsystem.components.async.AsyncActionView
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
import io.element.android.libraries.designsystem.theme.components.Button import io.element.android.libraries.designsystem.theme.components.Button
import io.element.android.libraries.designsystem.utils.CommonDrawables
@Composable @Composable
fun SecureBackupEnableView( fun SecureBackupEnableView(
@ -43,7 +41,7 @@ fun SecureBackupEnableView(
modifier = modifier, modifier = modifier,
onBackClicked = onBackClicked, onBackClicked = onBackClicked,
title = stringResource(id = R.string.screen_chat_backup_key_backup_action_enable), title = stringResource(id = R.string.screen_chat_backup_key_backup_action_enable),
iconVector = ImageVector.vectorResource(CommonDrawables.ic_key), iconVector = CompoundIcons.KeySolid(),
buttons = { Buttons(state = state) } buttons = { Buttons(state = state) }
) )
AsyncActionView( AsyncActionView(

View file

@ -21,11 +21,10 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
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.vector.ImageVector
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
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.tokens.generated.CompoundIcons
import io.element.android.features.securebackup.impl.R import io.element.android.features.securebackup.impl.R
import io.element.android.features.securebackup.impl.setup.views.RecoveryKeyView import io.element.android.features.securebackup.impl.setup.views.RecoveryKeyView
import io.element.android.libraries.designsystem.atomic.pages.FlowStepPage import io.element.android.libraries.designsystem.atomic.pages.FlowStepPage
@ -33,7 +32,6 @@ import io.element.android.libraries.designsystem.components.async.AsyncActionVie
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
import io.element.android.libraries.designsystem.theme.components.Button import io.element.android.libraries.designsystem.theme.components.Button
import io.element.android.libraries.designsystem.utils.CommonDrawables
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
@Composable @Composable
@ -55,7 +53,7 @@ fun SecureBackupEnterRecoveryKeyView(
FlowStepPage( FlowStepPage(
modifier = modifier, modifier = modifier,
onBackClicked = onBackClicked, onBackClicked = onBackClicked,
iconVector = ImageVector.vectorResource(CommonDrawables.ic_key), iconVector = CompoundIcons.KeySolid(),
title = stringResource(id = R.string.screen_recovery_key_confirm_title), title = stringResource(id = R.string.screen_recovery_key_confirm_title),
subTitle = stringResource(id = R.string.screen_recovery_key_confirm_description), subTitle = stringResource(id = R.string.screen_recovery_key_confirm_description),
content = { Content(state = state) }, content = { Content(state = state) },

View file

@ -21,10 +21,8 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
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.vector.ImageVector
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
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.tokens.generated.CompoundIcons import io.element.android.compound.tokens.generated.CompoundIcons
@ -39,7 +37,6 @@ import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.components.Button import io.element.android.libraries.designsystem.theme.components.Button
import io.element.android.libraries.designsystem.theme.components.IconSource import io.element.android.libraries.designsystem.theme.components.IconSource
import io.element.android.libraries.designsystem.theme.components.OutlinedButton import io.element.android.libraries.designsystem.theme.components.OutlinedButton
import io.element.android.libraries.designsystem.utils.CommonDrawables
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
@Composable @Composable
@ -54,7 +51,7 @@ fun SecureBackupSetupView(
onBackClicked = onBackClicked.takeIf { state.canGoBack() }, onBackClicked = onBackClicked.takeIf { state.canGoBack() },
title = title(state), title = title(state),
subTitle = subtitle(state), subTitle = subtitle(state),
iconVector = ImageVector.vectorResource(CommonDrawables.ic_key), iconVector = CompoundIcons.KeySolid(),
content = { Content(state) }, content = { Content(state) },
buttons = { Buttons(state, onDone = onDone) }, buttons = { Buttons(state, onDone = onDone) },
) )
@ -159,7 +156,7 @@ private fun ColumnScope.Buttons(
is SetupState.CreatedAndSaved -> { is SetupState.CreatedAndSaved -> {
OutlinedButton( OutlinedButton(
text = stringResource(id = R.string.screen_recovery_key_save_action), text = stringResource(id = R.string.screen_recovery_key_save_action),
leadingIcon = IconSource.Vector(CompoundIcons.Download), leadingIcon = IconSource.Vector(CompoundIcons.Download()),
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
onClick = { onClick = {
context.startSharePlainTextIntent( context.startSharePlainTextIntent(

View file

@ -53,7 +53,6 @@ import io.element.android.libraries.designsystem.theme.components.Icon
import io.element.android.libraries.designsystem.theme.components.OutlinedTextField import io.element.android.libraries.designsystem.theme.components.OutlinedTextField
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.theme.components.autofill import io.element.android.libraries.designsystem.theme.components.autofill
import io.element.android.libraries.designsystem.utils.CommonDrawables
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
@Composable @Composable
@ -115,7 +114,7 @@ private fun RecoveryKeyStaticContent(
modifier = Modifier.weight(1f), modifier = Modifier.weight(1f),
) )
Icon( Icon(
resourceId = CommonDrawables.ic_copy, imageVector = CompoundIcons.Copy(),
contentDescription = stringResource(id = CommonStrings.action_copy), contentDescription = stringResource(id = CommonStrings.action_copy),
tint = ElementTheme.colors.iconSecondary, tint = ElementTheme.colors.iconSecondary,
) )
@ -200,7 +199,7 @@ private fun RecoveryKeyFooter(state: RecoveryKeyViewState) {
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Icon( Icon(
imageVector = CompoundIcons.InfoSolid, imageVector = CompoundIcons.InfoSolid(),
contentDescription = null, contentDescription = null,
tint = ElementTheme.colors.iconSecondary, tint = ElementTheme.colors.iconSecondary,
modifier = Modifier modifier = Modifier

View file

@ -32,6 +32,7 @@ import androidx.compose.ui.res.stringResource
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.theme.ElementTheme
import io.element.android.compound.tokens.generated.CompoundIcons
import io.element.android.libraries.designsystem.atomic.molecules.ButtonColumnMolecule import io.element.android.libraries.designsystem.atomic.molecules.ButtonColumnMolecule
import io.element.android.libraries.designsystem.atomic.molecules.IconTitleSubtitleMolecule import io.element.android.libraries.designsystem.atomic.molecules.IconTitleSubtitleMolecule
import io.element.android.libraries.designsystem.atomic.organisms.InfoListItem import io.element.android.libraries.designsystem.atomic.organisms.InfoListItem
@ -41,7 +42,6 @@ import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.components.Button import io.element.android.libraries.designsystem.theme.components.Button
import io.element.android.libraries.designsystem.theme.temporaryColorBgSpecial import io.element.android.libraries.designsystem.theme.temporaryColorBgSpecial
import io.element.android.libraries.designsystem.utils.CommonDrawables
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.persistentListOf
@ -90,15 +90,15 @@ private fun SignedOutContent() {
items = persistentListOf( items = persistentListOf(
InfoListItem( InfoListItem(
message = stringResource(id = R.string.screen_signed_out_reason_1), message = stringResource(id = R.string.screen_signed_out_reason_1),
iconId = CommonDrawables.ic_lock_outline, iconVector = CompoundIcons.Lock(),
), ),
InfoListItem( InfoListItem(
message = stringResource(id = R.string.screen_signed_out_reason_2), message = stringResource(id = R.string.screen_signed_out_reason_2),
iconId = CommonDrawables.ic_devices, iconVector = CompoundIcons.Devices(),
), ),
InfoListItem( InfoListItem(
message = stringResource(id = R.string.screen_signed_out_reason_3), message = stringResource(id = R.string.screen_signed_out_reason_3),
iconId = CommonDrawables.ic_do_disturb_alt, iconVector = CompoundIcons.Block(),
), ),
), ),
textStyle = ElementTheme.typography.fontBodyMdMedium, textStyle = ElementTheme.typography.fontBodyMdMedium,

View file

@ -40,12 +40,12 @@ 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.compound.theme.ElementTheme
import io.element.android.compound.tokens.generated.CompoundIcons
import io.element.android.libraries.androidutils.system.copyToClipboard import io.element.android.libraries.androidutils.system.copyToClipboard
import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.AsyncData
import io.element.android.libraries.designsystem.components.async.AsyncFailure import io.element.android.libraries.designsystem.components.async.AsyncFailure
import io.element.android.libraries.designsystem.components.async.AsyncLoading import io.element.android.libraries.designsystem.components.async.AsyncLoading
import io.element.android.libraries.designsystem.components.button.BackButton import io.element.android.libraries.designsystem.components.button.BackButton
import io.element.android.libraries.designsystem.icons.CompoundDrawables
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
import io.element.android.libraries.designsystem.theme.aliasScreenTitle import io.element.android.libraries.designsystem.theme.aliasScreenTitle
@ -85,7 +85,7 @@ fun ViewFileView(
}, },
) { ) {
Icon( Icon(
resourceId = CompoundDrawables.ic_share_android, imageVector = CompoundIcons.ShareAndroid(),
contentDescription = stringResource(id = CommonStrings.action_share), contentDescription = stringResource(id = CommonStrings.action_share),
) )
} }
@ -95,7 +95,7 @@ fun ViewFileView(
}, },
) { ) {
Icon( Icon(
resourceId = CompoundDrawables.ic_download, imageVector = CompoundIcons.Download(),
contentDescription = stringResource(id = CommonStrings.action_save), contentDescription = stringResource(id = CommonStrings.action_save),
) )
} }

View file

@ -142,7 +142,7 @@ coil = { module = "io.coil-kt:coil", version.ref = "coil" }
coil_compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } coil_compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" }
coil_gif = { module = "io.coil-kt:coil-gif", version.ref = "coil" } coil_gif = { module = "io.coil-kt:coil-gif", version.ref = "coil" }
coil_test = { module = "io.coil-kt:coil-test", version.ref = "coil" } coil_test = { module = "io.coil-kt:coil-test", version.ref = "coil" }
compound = { module = "io.element.android:compound-android", version = "0.0.4" } compound = { module = "io.element.android:compound-android", version = "0.0.5" }
datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "datetime" } datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "datetime" }
serialization_json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization_json" } serialization_json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization_json" }
kotlinx_collections_immutable = "org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7" kotlinx_collections_immutable = "org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7"

View file

@ -71,7 +71,7 @@ fun DialogLikeBannerMolecule(
if (onDismissClicked != null) { if (onDismissClicked != null) {
Icon( Icon(
modifier = Modifier.clickable(onClick = onDismissClicked), modifier = Modifier.clickable(onClick = onDismissClicked),
imageVector = CompoundIcons.Close, imageVector = CompoundIcons.Close(),
contentDescription = stringResource(CommonStrings.action_close) contentDescription = stringResource(CommonStrings.action_close)
) )
} }

View file

@ -90,7 +90,7 @@ fun IconTitleSubtitleMolecule(
@Composable @Composable
internal fun IconTitleSubtitleMoleculePreview() = ElementPreview { internal fun IconTitleSubtitleMoleculePreview() = ElementPreview {
IconTitleSubtitleMolecule( IconTitleSubtitleMolecule(
iconImageVector = CompoundIcons.Chat, iconImageVector = CompoundIcons.Chat(),
title = "Title", title = "Title",
subTitle = "Subtitle", subTitle = "Subtitle",
) )

View file

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

View file

@ -97,7 +97,7 @@ internal fun FlowStepPagePreview() = ElementPreview {
onBackClicked = {}, onBackClicked = {},
title = "Title", title = "Title",
subTitle = "Subtitle", subTitle = "Subtitle",
iconVector = CompoundIcons.Computer, iconVector = CompoundIcons.Computer(),
content = { content = {
Box( Box(
Modifier Modifier

View file

@ -1,24 +0,0 @@
/*
* 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.
*/
package io.element.android.libraries.designsystem.colors
import androidx.compose.ui.graphics.Color
data class AvatarColors(
val background: Color,
val foreground: Color,
)

View file

@ -17,6 +17,7 @@
package io.element.android.libraries.designsystem.colors package io.element.android.libraries.designsystem.colors
import androidx.collection.LruCache import androidx.collection.LruCache
import io.element.android.compound.theme.AvatarColors
import io.element.android.compound.theme.avatarColorsDark import io.element.android.compound.theme.avatarColorsDark
import io.element.android.compound.theme.avatarColorsLight import io.element.android.compound.theme.avatarColorsLight
@ -46,10 +47,7 @@ object AvatarColorsProvider {
} else { } else {
avatarColorsDark[hash] avatarColorsDark[hash]
} }
return AvatarColors( return colors
background = colors.first,
foreground = colors.second,
)
} }
} }

View file

@ -508,7 +508,7 @@ internal fun BloomPreview() {
actions = { actions = {
IconButton(onClick = {}) { IconButton(onClick = {}) {
Icon( Icon(
imageVector = CompoundIcons.ShareAndroid, imageVector = CompoundIcons.ShareAndroid(),
contentDescription = null, contentDescription = null,
) )
} }

View file

@ -34,7 +34,7 @@ fun BackButton(
onClick: () -> Unit, onClick: () -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
// TODO Handle RTL languages // TODO Handle RTL languages
imageVector: ImageVector = CompoundIcons.ArrowLeft, imageVector: ImageVector = CompoundIcons.ArrowLeft(),
contentDescription: String = stringResource(CommonStrings.action_back), contentDescription: String = stringResource(CommonStrings.action_back),
enabled: Boolean = true, enabled: Boolean = true,
) { ) {

View file

@ -89,13 +89,13 @@ private fun ContentsToPreview() {
Row(Modifier.padding(10.dp)) { Row(Modifier.padding(10.dp)) {
MainActionButton( MainActionButton(
title = "Share", title = "Share",
imageVector = CompoundIcons.ShareAndroid, imageVector = CompoundIcons.ShareAndroid(),
onClick = { }, onClick = { },
) )
Spacer(modifier = Modifier.width(20.dp)) Spacer(modifier = Modifier.width(20.dp))
MainActionButton( MainActionButton(
title = "Share", title = "Share",
imageVector = CompoundIcons.ShareAndroid, imageVector = CompoundIcons.ShareAndroid(),
onClick = { }, onClick = { },
enabled = false, enabled = false,
) )

View file

@ -25,7 +25,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.compound.theme.ElementTheme import io.element.android.compound.theme.ElementTheme
import io.element.android.libraries.designsystem.icons.CompoundDrawables import io.element.android.compound.tokens.generated.CompoundIcons
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.Text import io.element.android.libraries.designsystem.theme.components.Text
@ -74,11 +74,11 @@ internal fun PreferenceCategoryPreview() = ElementThemedPreview {
) { ) {
PreferenceText( PreferenceText(
title = "Title", title = "Title",
iconResourceId = CompoundDrawables.ic_chat_problem, icon = CompoundIcons.ChatProblem(),
) )
PreferenceSwitch( PreferenceSwitch(
title = "Switch", title = "Switch",
iconResourceId = CompoundDrawables.ic_threads, icon = CompoundIcons.Threads(),
isChecked = true, isChecked = true,
onCheckedChange = {}, onCheckedChange = {},
) )

View file

@ -99,7 +99,7 @@ internal fun PreferenceCheckboxPreview() = ElementThemedPreview {
Column { Column {
PreferenceCheckbox( PreferenceCheckbox(
title = "Checkbox", title = "Checkbox",
iconResourceId = CompoundDrawables.ic_threads, iconResourceId = CompoundDrawables.ic_compound_threads,
enabled = true, enabled = true,
isChecked = true, isChecked = true,
onCheckedChange = {}, onCheckedChange = {},
@ -107,7 +107,7 @@ internal fun PreferenceCheckboxPreview() = ElementThemedPreview {
PreferenceCheckbox( PreferenceCheckbox(
title = "Checkbox with supporting text", title = "Checkbox with supporting text",
supportingText = "Supporting text", supportingText = "Supporting text",
iconResourceId = CompoundDrawables.ic_threads, iconResourceId = CompoundDrawables.ic_compound_threads,
enabled = true, enabled = true,
isChecked = true, isChecked = true,
onCheckedChange = {}, onCheckedChange = {},

View file

@ -32,8 +32,8 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
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.libraries.designsystem.components.button.BackButton import io.element.android.libraries.designsystem.components.button.BackButton
import io.element.android.libraries.designsystem.icons.CompoundDrawables
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
import io.element.android.libraries.designsystem.theme.aliasScreenTitle import io.element.android.libraries.designsystem.theme.aliasScreenTitle
@ -109,19 +109,19 @@ internal fun PreferenceViewPreview() = ElementPreview {
PreferenceText( PreferenceText(
title = "Title", title = "Title",
subtitle = "Some other text", subtitle = "Some other text",
iconResourceId = CompoundDrawables.ic_chat_problem, icon = CompoundIcons.ChatProblem(),
) )
PreferenceDivider() PreferenceDivider()
PreferenceSwitch( PreferenceSwitch(
title = "Switch", title = "Switch",
iconResourceId = CompoundDrawables.ic_threads, icon = CompoundIcons.Threads(),
isChecked = true, isChecked = true,
onCheckedChange = {}, onCheckedChange = {},
) )
PreferenceDivider() PreferenceDivider()
PreferenceCheckbox( PreferenceCheckbox(
title = "Checkbox", title = "Checkbox",
iconResourceId = CompoundDrawables.ic_notifications, icon = CompoundIcons.Notifications(),
isChecked = true, isChecked = true,
onCheckedChange = {}, onCheckedChange = {},
) )

View file

@ -29,8 +29,8 @@ import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
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.libraries.designsystem.components.preferences.components.PreferenceIcon import io.element.android.libraries.designsystem.components.preferences.components.PreferenceIcon
import io.element.android.libraries.designsystem.icons.CompoundDrawables
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.Slider import io.element.android.libraries.designsystem.theme.components.Slider
@ -92,7 +92,7 @@ fun PreferenceSlide(
@Composable @Composable
internal fun PreferenceSlidePreview() = ElementThemedPreview { internal fun PreferenceSlidePreview() = ElementThemedPreview {
PreferenceSlide( PreferenceSlide(
iconResourceId = CompoundDrawables.ic_user_profile, icon = CompoundIcons.UserProfile(),
title = "Slide", title = "Slide",
summary = "Summary", summary = "Summary",
value = 0.75F, value = 0.75F,

View file

@ -33,8 +33,8 @@ import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
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.libraries.designsystem.components.preferences.components.PreferenceIcon import io.element.android.libraries.designsystem.components.preferences.components.PreferenceIcon
import io.element.android.libraries.designsystem.icons.CompoundDrawables
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.Switch import io.element.android.libraries.designsystem.theme.components.Switch
@ -106,7 +106,7 @@ internal fun PreferenceSwitchPreview() = ElementThemedPreview {
PreferenceSwitch( PreferenceSwitch(
title = "Switch", title = "Switch",
subtitle = "Subtitle Switch", subtitle = "Subtitle Switch",
iconResourceId = CompoundDrawables.ic_threads, icon = CompoundIcons.Threads(),
enabled = true, enabled = true,
isChecked = true, isChecked = true,
onCheckedChange = {}, onCheckedChange = {},

View file

@ -35,9 +35,9 @@ import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
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.libraries.designsystem.atomic.atoms.RedIndicatorAtom import io.element.android.libraries.designsystem.atomic.atoms.RedIndicatorAtom
import io.element.android.libraries.designsystem.components.preferences.components.PreferenceIcon import io.element.android.libraries.designsystem.components.preferences.components.PreferenceIcon
import io.element.android.libraries.designsystem.icons.CompoundDrawables
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.PreviewGroup import io.element.android.libraries.designsystem.preview.PreviewGroup
@ -169,26 +169,26 @@ private fun ContentToPreview(showEndBadge: Boolean) {
) { ) {
PreferenceText( PreferenceText(
title = "Title", title = "Title",
iconResourceId = CompoundDrawables.ic_chat_problem, icon = CompoundIcons.ChatProblem(),
showEndBadge = showEndBadge, showEndBadge = showEndBadge,
) )
PreferenceText( PreferenceText(
title = "Title", title = "Title",
subtitle = "Some content", subtitle = "Some content",
iconResourceId = CompoundDrawables.ic_chat_problem, icon = CompoundIcons.ChatProblem(),
showEndBadge = showEndBadge, showEndBadge = showEndBadge,
) )
PreferenceText( PreferenceText(
title = "Title", title = "Title",
subtitle = "Some content", subtitle = "Some content",
iconResourceId = CompoundDrawables.ic_chat_problem, icon = CompoundIcons.ChatProblem(),
currentValue = "123", currentValue = "123",
showEndBadge = showEndBadge, showEndBadge = showEndBadge,
) )
PreferenceText( PreferenceText(
title = "Title", title = "Title",
subtitle = "Some content", subtitle = "Some content",
iconResourceId = CompoundDrawables.ic_chat_problem, icon = CompoundIcons.ChatProblem(),
currentValue = "123", currentValue = "123",
enabled = false, enabled = false,
showEndBadge = showEndBadge, showEndBadge = showEndBadge,
@ -196,19 +196,19 @@ private fun ContentToPreview(showEndBadge: Boolean) {
PreferenceText( PreferenceText(
title = "Title", title = "Title",
subtitle = "Some content", subtitle = "Some content",
iconResourceId = CompoundDrawables.ic_chat_problem, icon = CompoundIcons.ChatProblem(),
loadingCurrentValue = true, loadingCurrentValue = true,
showEndBadge = showEndBadge, showEndBadge = showEndBadge,
) )
PreferenceText( PreferenceText(
title = "Title", title = "Title",
iconResourceId = CompoundDrawables.ic_chat_problem, icon = CompoundIcons.ChatProblem(),
currentValue = "123", currentValue = "123",
showEndBadge = showEndBadge, showEndBadge = showEndBadge,
) )
PreferenceText( PreferenceText(
title = "Title", title = "Title",
iconResourceId = CompoundDrawables.ic_chat_problem, icon = CompoundIcons.ChatProblem(),
loadingCurrentValue = true, loadingCurrentValue = true,
showEndBadge = showEndBadge, showEndBadge = showEndBadge,
) )

View file

@ -21,36 +21,12 @@ import io.element.android.libraries.designsystem.R
// This list and all the drawable it contains should be removed at some point. // This list and all the drawable it contains should be removed at some point.
// All the icons should be defined in Compound. // All the icons should be defined in Compound.
internal val iconsOther = listOf( internal val iconsOther = listOf(
R.drawable.ic_add_reaction, R.drawable.ic_cancel,
R.drawable.ic_attachment,
R.drawable.ic_copy,
R.drawable.ic_developer_options, R.drawable.ic_developer_options,
R.drawable.ic_devices,
R.drawable.ic_edit,
R.drawable.ic_edit_outline,
R.drawable.ic_encryption_enabled, R.drawable.ic_encryption_enabled,
R.drawable.ic_forward,
R.drawable.ic_groups, R.drawable.ic_groups,
R.drawable.ic_image, R.drawable.ic_notification_small,
R.drawable.ic_indent_decrease,
R.drawable.ic_indent_increase,
R.drawable.ic_inline_code,
R.drawable.ic_italic,
R.drawable.ic_link,
R.drawable.ic_location_navigator,
R.drawable.ic_location_navigator_centered,
R.drawable.ic_new_message,
R.drawable.ic_numbered_list,
R.drawable.ic_plus_composer, R.drawable.ic_plus_composer,
R.drawable.ic_quote, R.drawable.ic_stop,
R.drawable.ic_reply, R.drawable.pin,
R.drawable.ic_retry,
R.drawable.ic_sign_out,
R.drawable.ic_strikethrough,
R.drawable.ic_take_photo_camera,
R.drawable.ic_text_formatting,
R.drawable.ic_underline,
R.drawable.ic_user,
R.drawable.ic_user_add,
R.drawable.ic_waiting_to_decrypt,
) )

View file

@ -436,7 +436,7 @@ internal fun DialogWithTitleIconAndOkButtonPreview() {
SimpleAlertDialogContent( SimpleAlertDialogContent(
icon = { icon = {
Icon( Icon(
imageVector = CompoundIcons.NotificationsSolid, imageVector = CompoundIcons.NotificationsSolid(),
contentDescription = null contentDescription = null
) )
}, },

View file

@ -403,7 +403,7 @@ private fun ColumnScope.ButtonMatrixPreview(
) )
// With icon // With icon
ButtonRowPreview( ButtonRowPreview(
leadingIcon = IconSource.Vector(CompoundIcons.ShareAndroid), leadingIcon = IconSource.Vector(CompoundIcons.ShareAndroid()),
style = style, style = style,
size = size, size = size,
destructive = destructive, destructive = destructive,

View file

@ -83,32 +83,32 @@ internal fun DropdownMenuItemPreview() = ElementThemedPreview {
DropdownMenuItem( DropdownMenuItem(
text = { Text(text = "Item") }, text = { Text(text = "Item") },
onClick = {}, onClick = {},
trailingIcon = { Icon(imageVector = CompoundIcons.ChevronRight, contentDescription = null) }, trailingIcon = { Icon(imageVector = CompoundIcons.ChevronRight(), contentDescription = null) },
) )
HorizontalDivider() HorizontalDivider()
DropdownMenuItem( DropdownMenuItem(
text = { Text(text = "Item") }, text = { Text(text = "Item") },
onClick = {}, onClick = {},
leadingIcon = { Icon(imageVector = CompoundIcons.ChatProblem, contentDescription = null) }, leadingIcon = { Icon(imageVector = CompoundIcons.ChatProblem(), contentDescription = null) },
) )
DropdownMenuItem( DropdownMenuItem(
text = { Text(text = "Item") }, text = { Text(text = "Item") },
onClick = {}, onClick = {},
leadingIcon = { Icon(imageVector = CompoundIcons.ChatProblem, contentDescription = null) }, leadingIcon = { Icon(imageVector = CompoundIcons.ChatProblem(), contentDescription = null) },
trailingIcon = { Icon(imageVector = CompoundIcons.ChevronRight, contentDescription = null) }, trailingIcon = { Icon(imageVector = CompoundIcons.ChevronRight(), contentDescription = null) },
) )
DropdownMenuItem( DropdownMenuItem(
text = { Text(text = "Item") }, text = { Text(text = "Item") },
onClick = {}, onClick = {},
enabled = false, enabled = false,
leadingIcon = { Icon(imageVector = CompoundIcons.ChatProblem, contentDescription = null) }, leadingIcon = { Icon(imageVector = CompoundIcons.ChatProblem(), contentDescription = null) },
trailingIcon = { Icon(imageVector = CompoundIcons.ChevronRight, contentDescription = null) }, trailingIcon = { Icon(imageVector = CompoundIcons.ChevronRight(), contentDescription = null) },
) )
HorizontalDivider() HorizontalDivider()
DropdownMenuItem( DropdownMenuItem(
text = { Text(text = "Multiline\nItem") }, text = { Text(text = "Multiline\nItem") },
onClick = {}, onClick = {},
trailingIcon = { Icon(imageVector = CompoundIcons.ChevronRight, contentDescription = null) }, trailingIcon = { Icon(imageVector = CompoundIcons.ChevronRight(), contentDescription = null) },
) )
} }
} }

View file

@ -63,7 +63,7 @@ fun FloatingActionButton(
internal fun FloatingActionButtonPreview() = ElementThemedPreview { internal fun FloatingActionButtonPreview() = ElementThemedPreview {
Box(modifier = Modifier.padding(8.dp)) { Box(modifier = Modifier.padding(8.dp)) {
FloatingActionButton(onClick = {}) { FloatingActionButton(onClick = {}) {
Icon(imageVector = CompoundIcons.Close, contentDescription = null) Icon(imageVector = CompoundIcons.Close(), contentDescription = null)
} }
} }
} }

View file

@ -141,5 +141,5 @@ fun Icon(
@Preview(group = PreviewGroup.Icons) @Preview(group = PreviewGroup.Icons)
@Composable @Composable
internal fun IconImageVectorPreview() = ElementThemedPreview { internal fun IconImageVectorPreview() = ElementThemedPreview {
Icon(imageVector = CompoundIcons.Close, contentDescription = null) Icon(imageVector = CompoundIcons.Close(), contentDescription = null)
} }

View file

@ -63,20 +63,20 @@ internal fun IconButtonPreview() = ElementThemedPreview {
CompositionLocalProvider(LocalContentColor provides ElementTheme.colors.iconPrimary) { CompositionLocalProvider(LocalContentColor provides ElementTheme.colors.iconPrimary) {
Row { Row {
IconButton(onClick = {}) { IconButton(onClick = {}) {
Icon(imageVector = CompoundIcons.Close, contentDescription = null) Icon(imageVector = CompoundIcons.Close(), contentDescription = null)
} }
IconButton(enabled = false, onClick = {}) { IconButton(enabled = false, onClick = {}) {
Icon(imageVector = CompoundIcons.Close, contentDescription = null) Icon(imageVector = CompoundIcons.Close(), contentDescription = null)
} }
} }
} }
CompositionLocalProvider(LocalContentColor provides ElementTheme.colors.iconSecondary) { CompositionLocalProvider(LocalContentColor provides ElementTheme.colors.iconSecondary) {
Row { Row {
IconButton(onClick = {}) { IconButton(onClick = {}) {
Icon(imageVector = CompoundIcons.Close, contentDescription = null) Icon(imageVector = CompoundIcons.Close(), contentDescription = null)
} }
IconButton(enabled = false, onClick = {}) { IconButton(enabled = false, onClick = {}) {
Icon(imageVector = CompoundIcons.Close, contentDescription = null) Icon(imageVector = CompoundIcons.Close(), contentDescription = null)
} }
} }
} }

View file

@ -471,6 +471,6 @@ private object PreviewItems {
@Composable @Composable
fun icon() = ListItemContent.Icon( fun icon() = ListItemContent.Icon(
iconSource = IconSource.Vector(CompoundIcons.ShareAndroid) iconSource = IconSource.Vector(CompoundIcons.ShareAndroid())
) )
} }

View file

@ -158,7 +158,7 @@ internal fun ListSupportingTextSmallPaddingPreview() {
Column { Column {
ListItem( ListItem(
headlineContent = { Text("A title") }, headlineContent = { Text("A title") },
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.ShareAndroid)) leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.ShareAndroid()))
) )
ListSupportingText( ListSupportingText(
text = "Supporting line text lorem ipsum dolor sit amet, consectetur. Read more", text = "Supporting line text lorem ipsum dolor sit amet, consectetur. Read more",

View file

@ -70,7 +70,7 @@ internal fun MediumTopAppBarPreview() = ElementThemedPreview {
TextButton(text = "Action", onClick = {}) TextButton(text = "Action", onClick = {})
IconButton(onClick = {}) { IconButton(onClick = {}) {
Icon( Icon(
imageVector = CompoundIcons.ShareAndroid, imageVector = CompoundIcons.ShareAndroid(),
contentDescription = null, contentDescription = null,
) )
} }

View file

@ -98,7 +98,7 @@ fun <T> SearchBar(
{ {
IconButton(onClick = { onQueryChange("") }) { IconButton(onClick = { onQueryChange("") }) {
Icon( Icon(
imageVector = CompoundIcons.Close, imageVector = CompoundIcons.Close(),
contentDescription = stringResource(CommonStrings.action_clear), contentDescription = stringResource(CommonStrings.action_clear),
) )
} }
@ -108,7 +108,7 @@ fun <T> SearchBar(
!active -> { !active -> {
{ {
Icon( Icon(
imageVector = CompoundIcons.Search, imageVector = CompoundIcons.Search(),
contentDescription = stringResource(CommonStrings.action_search), contentDescription = stringResource(CommonStrings.action_search),
tint = MaterialTheme.colorScheme.tertiary, tint = MaterialTheme.colorScheme.tertiary,
) )

View file

@ -120,7 +120,7 @@ internal fun SnackbarWithActionAndCloseButtonPreview() {
message = "Snackbar supporting text", message = "Snackbar supporting text",
action = ButtonVisuals.Text("Action") {}, action = ButtonVisuals.Text("Action") {},
dismissAction = ButtonVisuals.Icon( dismissAction = ButtonVisuals.Icon(
IconSource.Vector(CompoundIcons.Close) IconSource.Vector(CompoundIcons.Close())
) {} ) {}
) )
} }
@ -142,7 +142,7 @@ internal fun SnackbarWithActionOnNewLineAndCloseButtonPreview() {
message = "Snackbar supporting text", message = "Snackbar supporting text",
action = ButtonVisuals.Text("Action", {}), action = ButtonVisuals.Text("Action", {}),
dismissAction = ButtonVisuals.Icon( dismissAction = ButtonVisuals.Icon(
IconSource.Vector(CompoundIcons.Close) IconSource.Vector(CompoundIcons.Close())
) {}, ) {},
actionOnNewLine = true actionOnNewLine = true
) )

View file

@ -70,7 +70,7 @@ internal fun TopAppBarPreview() = ElementThemedPreview {
TextButton(text = "Action", onClick = {}) TextButton(text = "Action", onClick = {})
IconButton(onClick = {}) { IconButton(onClick = {}) {
Icon( Icon(
imageVector = CompoundIcons.ShareAndroid, imageVector = CompoundIcons.ShareAndroid(),
contentDescription = null, contentDescription = null,
) )
} }

View file

@ -55,7 +55,7 @@ internal fun MenuPreview() {
val trailingIcon: @Composable (() -> Unit)? = if (i in 3..4) { val trailingIcon: @Composable (() -> Unit)? = if (i in 3..4) {
@Composable { @Composable {
Icon( Icon(
imageVector = CompoundIcons.ChevronRight, imageVector = CompoundIcons.ChevronRight(),
contentDescription = null, contentDescription = null,
) )
} }

View file

@ -36,7 +36,7 @@ fun SnackbarHost(hostState: SnackbarHostState, modifier: Modifier = Modifier) {
action = data.visuals.actionLabel?.let { ButtonVisuals.Text(it, data::performAction) }, action = data.visuals.actionLabel?.let { ButtonVisuals.Text(it, data::performAction) },
dismissAction = if (data.visuals.withDismissAction) { dismissAction = if (data.visuals.withDismissAction) {
ButtonVisuals.Icon( ButtonVisuals.Icon(
IconSource.Vector(CompoundIcons.Close), IconSource.Vector(CompoundIcons.Close()),
data::dismiss data::dismiss
) )
} else { } else {

View file

@ -1,25 +0,0 @@
<!--
~ 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,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,2C12.717,2 13.408,2.071 14.075,2.213C14.742,2.354 15.383,2.558 16,2.825V5.075C15.417,4.742 14.788,4.479 14.113,4.287C13.438,4.096 12.733,4 12,4C9.783,4 7.896,4.779 6.338,6.338C4.779,7.896 4,9.783 4,12C4,14.217 4.779,16.104 6.338,17.663C7.896,19.221 9.783,20 12,20C14.217,20 16.104,19.221 17.663,17.663C19.221,16.104 20,14.217 20,12C20,11.467 19.946,10.95 19.837,10.45C19.729,9.95 19.583,9.467 19.4,9H21.55C21.7,9.483 21.813,9.971 21.888,10.462C21.962,10.954 22,11.467 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,22ZM20,5H19C18.717,5 18.479,4.904 18.288,4.713C18.096,4.521 18,4.283 18,4C18,3.717 18.096,3.479 18.288,3.287C18.479,3.096 18.717,3 19,3H20V2C20,1.717 20.096,1.479 20.288,1.288C20.479,1.096 20.717,1 21,1C21.283,1 21.521,1.096 21.712,1.288C21.904,1.479 22,1.717 22,2V3H23C23.283,3 23.521,3.096 23.712,3.287C23.904,3.479 24,3.717 24,4C24,4.283 23.904,4.521 23.712,4.713C23.521,4.904 23.283,5 23,5H22V6C22,6.283 21.904,6.521 21.712,6.713C21.521,6.904 21.283,7 21,7C20.717,7 20.479,6.904 20.288,6.713C20.096,6.521 20,6.283 20,6V5ZM15.5,11C15.917,11 16.271,10.854 16.563,10.563C16.854,10.271 17,9.917 17,9.5C17,9.083 16.854,8.729 16.563,8.438C16.271,8.146 15.917,8 15.5,8C15.083,8 14.729,8.146 14.438,8.438C14.146,8.729 14,9.083 14,9.5C14,9.917 14.146,10.271 14.438,10.563C14.729,10.854 15.083,11 15.5,11ZM8.5,11C8.917,11 9.271,10.854 9.563,10.563C9.854,10.271 10,9.917 10,9.5C10,9.083 9.854,8.729 9.563,8.438C9.271,8.146 8.917,8 8.5,8C8.083,8 7.729,8.146 7.438,8.438C7.146,8.729 7,9.083 7,9.5C7,9.917 7.146,10.271 7.438,10.563C7.729,10.854 8.083,11 8.5,11ZM12,17.5C12.967,17.5 13.858,17.267 14.675,16.8C15.492,16.333 16.15,15.7 16.65,14.9C16.75,14.7 16.742,14.5 16.625,14.3C16.508,14.1 16.333,14 16.1,14H7.9C7.667,14 7.492,14.1 7.375,14.3C7.258,14.5 7.25,14.7 7.35,14.9C7.85,15.7 8.512,16.333 9.337,16.8C10.163,17.267 11.05,17.5 12,17.5Z"
android:fillColor="@android:color/white"/>
</vector>

View file

@ -1,25 +0,0 @@
<!--
~ 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="M11.5,22C9.967,22 8.667,21.467 7.6,20.4C6.533,19.333 6,18.033 6,16.5V6C6,4.9 6.392,3.958 7.175,3.175C7.958,2.392 8.9,2 10,2C11.1,2 12.042,2.392 12.825,3.175C13.608,3.958 14,4.9 14,6V15.5C14,16.2 13.758,16.792 13.275,17.275C12.792,17.758 12.2,18 11.5,18C10.8,18 10.208,17.758 9.725,17.275C9.242,16.792 9,16.2 9,15.5V6.75C9,6.533 9.071,6.354 9.212,6.213C9.354,6.071 9.533,6 9.75,6C9.967,6 10.146,6.071 10.288,6.213C10.429,6.354 10.5,6.533 10.5,6.75V15.5C10.5,15.783 10.596,16.021 10.788,16.212C10.979,16.404 11.217,16.5 11.5,16.5C11.783,16.5 12.021,16.404 12.212,16.212C12.404,16.021 12.5,15.783 12.5,15.5V6C12.5,5.3 12.258,4.708 11.775,4.225C11.292,3.742 10.7,3.5 10,3.5C9.3,3.5 8.708,3.742 8.225,4.225C7.742,4.708 7.5,5.3 7.5,6V16.5C7.5,17.6 7.892,18.542 8.675,19.325C9.458,20.108 10.4,20.5 11.5,20.5C12.6,20.5 13.542,20.108 14.325,19.325C15.108,18.542 15.5,17.6 15.5,16.5V6.75C15.5,6.533 15.571,6.354 15.712,6.213C15.854,6.071 16.033,6 16.25,6C16.467,6 16.646,6.071 16.788,6.213C16.929,6.354 17,6.533 17,6.75V16.5C17,18.033 16.467,19.333 15.4,20.4C14.333,21.467 13.033,22 11.5,22Z"
android:fillColor="@android:color/white"/>
</vector>

View file

@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="20"
android:viewportHeight="20">
<path
android:pathData="M7.333,15.833C6.875,15.833 6.483,15.67 6.156,15.343C5.83,15.017 5.667,14.624 5.667,14.166V5.833C5.667,5.374 5.83,4.982 6.156,4.656C6.483,4.329 6.875,4.166 7.333,4.166H10.271C11.174,4.166 12.007,4.444 12.771,4.999C13.535,5.555 13.917,6.326 13.917,7.312C13.917,8.02 13.757,8.565 13.438,8.947C13.118,9.329 12.819,9.604 12.542,9.77C12.889,9.923 13.274,10.208 13.698,10.624C14.122,11.041 14.333,11.666 14.333,12.499C14.333,13.736 13.882,14.6 12.979,15.093C12.076,15.586 11.229,15.833 10.438,15.833H7.333ZM8.188,13.499H10.354C11.021,13.499 11.427,13.329 11.573,12.989C11.719,12.649 11.792,12.402 11.792,12.249C11.792,12.097 11.719,11.85 11.573,11.51C11.427,11.17 11,10.999 10.292,10.999H8.188V13.499ZM8.188,8.749H10.125C10.583,8.749 10.917,8.631 11.125,8.395C11.333,8.159 11.438,7.895 11.438,7.604C11.438,7.27 11.319,6.999 11.083,6.791C10.847,6.583 10.542,6.479 10.167,6.479H8.188V8.749Z"
android:fillColor="@android:color/white"/>
</vector>

View file

@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="20"
android:viewportHeight="20">
<path
android:pathData="M8.333,15.834C8.097,15.834 7.899,15.754 7.74,15.594C7.58,15.435 7.5,15.237 7.5,15.001C7.5,14.764 7.58,14.567 7.74,14.407C7.899,14.247 8.097,14.167 8.333,14.167H16.667C16.903,14.167 17.101,14.247 17.26,14.407C17.42,14.567 17.5,14.764 17.5,15.001C17.5,15.237 17.42,15.435 17.26,15.594C17.101,15.754 16.903,15.834 16.667,15.834H8.333ZM8.333,10.834C8.097,10.834 7.899,10.754 7.74,10.594C7.58,10.435 7.5,10.237 7.5,10.001C7.5,9.765 7.58,9.567 7.74,9.407C7.899,9.247 8.097,9.167 8.333,9.167H16.667C16.903,9.167 17.101,9.247 17.26,9.407C17.42,9.567 17.5,9.765 17.5,10.001C17.5,10.237 17.42,10.435 17.26,10.594C17.101,10.754 16.903,10.834 16.667,10.834H8.333ZM8.333,5.834C8.097,5.834 7.899,5.754 7.74,5.594C7.58,5.435 7.5,5.237 7.5,5.001C7.5,4.765 7.58,4.567 7.74,4.407C7.899,4.247 8.097,4.167 8.333,4.167H16.667C16.903,4.167 17.101,4.247 17.26,4.407C17.42,4.567 17.5,4.765 17.5,5.001C17.5,5.237 17.42,5.435 17.26,5.594C17.101,5.754 16.903,5.834 16.667,5.834H8.333ZM4.167,16.667C3.708,16.667 3.316,16.504 2.99,16.178C2.663,15.851 2.5,15.459 2.5,15.001C2.5,14.542 2.663,14.15 2.99,13.824C3.316,13.497 3.708,13.334 4.167,13.334C4.625,13.334 5.017,13.497 5.344,13.824C5.67,14.15 5.833,14.542 5.833,15.001C5.833,15.459 5.67,15.851 5.344,16.178C5.017,16.504 4.625,16.667 4.167,16.667ZM4.167,11.667C3.708,11.667 3.316,11.504 2.99,11.178C2.663,10.851 2.5,10.459 2.5,10.001C2.5,9.542 2.663,9.15 2.99,8.824C3.316,8.497 3.708,8.334 4.167,8.334C4.625,8.334 5.017,8.497 5.344,8.824C5.67,9.15 5.833,9.542 5.833,10.001C5.833,10.459 5.67,10.851 5.344,11.178C5.017,11.504 4.625,11.667 4.167,11.667ZM4.167,6.667C3.708,6.667 3.316,6.504 2.99,6.178C2.663,5.851 2.5,5.459 2.5,5.001C2.5,4.542 2.663,4.15 2.99,3.824C3.316,3.497 3.708,3.334 4.167,3.334C4.625,3.334 5.017,3.497 5.344,3.824C5.67,4.15 5.833,4.542 5.833,5.001C5.833,5.459 5.67,5.851 5.344,6.178C5.017,6.504 4.625,6.667 4.167,6.667Z"
android:fillColor="@android:color/white"/>
</vector>

View file

@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="20"
android:viewportHeight="20">
<path
android:pathData="M7.354,10L8.583,8.771C8.75,8.604 8.833,8.41 8.833,8.188C8.833,7.965 8.75,7.771 8.583,7.604C8.417,7.438 8.219,7.354 7.99,7.354C7.76,7.354 7.563,7.438 7.396,7.604L5.583,9.417C5.5,9.5 5.441,9.59 5.406,9.688C5.372,9.785 5.354,9.889 5.354,10C5.354,10.111 5.372,10.215 5.406,10.313C5.441,10.41 5.5,10.5 5.583,10.583L7.396,12.396C7.563,12.563 7.76,12.646 7.99,12.646C8.219,12.646 8.417,12.563 8.583,12.396C8.75,12.229 8.833,12.035 8.833,11.813C8.833,11.59 8.75,11.396 8.583,11.229L7.354,10ZM12.646,10L11.417,11.229C11.25,11.396 11.167,11.59 11.167,11.813C11.167,12.035 11.25,12.229 11.417,12.396C11.583,12.563 11.781,12.646 12.01,12.646C12.24,12.646 12.438,12.563 12.604,12.396L14.417,10.583C14.5,10.5 14.559,10.41 14.594,10.313C14.628,10.215 14.646,10.111 14.646,10C14.646,9.889 14.628,9.785 14.594,9.688C14.559,9.59 14.5,9.5 14.417,9.417L12.604,7.604C12.521,7.521 12.427,7.458 12.323,7.417C12.219,7.375 12.115,7.354 12.01,7.354C11.906,7.354 11.802,7.375 11.698,7.417C11.594,7.458 11.5,7.521 11.417,7.604C11.25,7.771 11.167,7.965 11.167,8.188C11.167,8.41 11.25,8.604 11.417,8.771L12.646,10ZM4.167,17.5C3.708,17.5 3.316,17.337 2.99,17.01C2.663,16.684 2.5,16.292 2.5,15.833V4.167C2.5,3.708 2.663,3.316 2.99,2.99C3.316,2.663 3.708,2.5 4.167,2.5H15.833C16.292,2.5 16.684,2.663 17.01,2.99C17.337,3.316 17.5,3.708 17.5,4.167V15.833C17.5,16.292 17.337,16.684 17.01,17.01C16.684,17.337 16.292,17.5 15.833,17.5H4.167ZM4.167,15.833H15.833V4.167H4.167V15.833Z"
android:fillColor="@android:color/white"/>
</vector>

View file

@ -1,25 +0,0 @@
<!--
~ 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="M9,18C8.45,18 7.979,17.804 7.588,17.413C7.196,17.021 7,16.55 7,16V4C7,3.45 7.196,2.979 7.588,2.588C7.979,2.196 8.45,2 9,2H18C18.55,2 19.021,2.196 19.413,2.588C19.804,2.979 20,3.45 20,4V16C20,16.55 19.804,17.021 19.413,17.413C19.021,17.804 18.55,18 18,18H9ZM9,16H18V4H9V16ZM5,22C4.45,22 3.979,21.804 3.588,21.413C3.196,21.021 3,20.55 3,20V7C3,6.717 3.096,6.479 3.288,6.287C3.479,6.096 3.717,6 4,6C4.283,6 4.521,6.096 4.713,6.287C4.904,6.479 5,6.717 5,7V20H15C15.283,20 15.521,20.096 15.713,20.288C15.904,20.479 16,20.717 16,21C16,21.283 15.904,21.521 15.713,21.712C15.521,21.904 15.283,22 15,22H5Z"
android:fillColor="@android:color/white"/>
</vector>

View file

@ -1,9 +0,0 @@
<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

@ -1,29 +0,0 @@
<!--
~ 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="20dp"
android:height="20dp"
android:viewportWidth="20"
android:viewportHeight="20">
<group>
<clip-path
android:pathData="M0,0h20v20h-20z"/>
<path
android:pathData="M10,1.667C5.417,1.667 1.666,5.417 1.666,10C1.666,14.583 5.417,18.333 10,18.333C14.583,18.333 18.333,14.583 18.333,10C18.333,5.417 14.583,1.667 10,1.667ZM3.333,10C3.333,6.333 6.333,3.333 10,3.333C11.5,3.333 12.917,3.833 14.083,4.75L4.75,14.083C3.833,12.917 3.333,11.5 3.333,10ZM10,16.667C8.5,16.667 7.083,16.167 5.917,15.25L15.25,5.917C16.167,7.083 16.667,8.5 16.667,10C16.667,13.667 13.667,16.667 10,16.667Z"
android:fillColor="@android:color/white"/>
</group>
</vector>

View file

@ -1,25 +0,0 @@
<!--
~ 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="16dp"
android:height="16dp"
android:viewportWidth="16"
android:viewportHeight="16">
<path
android:pathData="M12.9,6L10,3.2L11,2.2C11.2,2 11.5,1.8 11.9,1.8C12.3,1.8 12.6,2 12.9,2.2L13.8,3.2C14,3.4 14.2,3.7 14.2,4.1C14.2,4.4 14.1,4.7 13.8,5L12.9,6ZM2.7,14C2.5,14 2.3,13.9 2.2,13.8C2.1,13.7 2,13.5 2,13.3V11.5C2,11.4 2,11.3 2.1,11.2C2.1,11.1 2.1,11 2.2,11L9.1,4.1L11.9,6.9L5,13.8C5,13.9 4.9,13.9 4.8,14C4.7,14 4.6,14 4.6,14H2.7Z"
android:fillColor="#1B1D22"/>
</vector>

View file

@ -1,25 +0,0 @@
<!--
~ 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="M5,19H6.4L15.025,10.375L13.625,8.975L5,17.6V19ZM19.3,8.925L15.05,4.725L16.45,3.325C16.833,2.942 17.304,2.75 17.862,2.75C18.421,2.75 18.892,2.942 19.275,3.325L20.675,4.725C21.058,5.108 21.258,5.571 21.275,6.113C21.292,6.654 21.108,7.117 20.725,7.5L19.3,8.925ZM4,21C3.717,21 3.479,20.904 3.287,20.712C3.096,20.521 3,20.283 3,20V17.175C3,17.042 3.025,16.913 3.075,16.788C3.125,16.663 3.2,16.55 3.3,16.45L13.6,6.15L17.85,10.4L7.55,20.7C7.45,20.8 7.338,20.875 7.213,20.925C7.088,20.975 6.958,21 6.825,21H4ZM14.325,9.675L13.625,8.975L15.025,10.375L14.325,9.675Z"
android:fillColor="@android:color/white"/>
</vector>

View file

@ -1,25 +0,0 @@
<!--
~ 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="M4,19C3.717,19 3.479,18.904 3.287,18.712C3.096,18.521 3,18.283 3,18V15C3,13.617 3.487,12.438 4.463,11.462C5.438,10.488 6.617,10 8,10H17.2L14.275,7.075C14.092,6.892 14,6.667 14,6.4C14,6.133 14.1,5.9 14.3,5.7C14.483,5.517 14.717,5.425 15,5.425C15.283,5.425 15.517,5.517 15.7,5.7L20.3,10.3C20.4,10.4 20.471,10.508 20.513,10.625C20.554,10.742 20.575,10.867 20.575,11C20.575,11.133 20.554,11.258 20.513,11.375C20.471,11.492 20.4,11.6 20.3,11.7L15.675,16.325C15.492,16.508 15.267,16.6 15,16.6C14.733,16.6 14.5,16.5 14.3,16.3C14.117,16.117 14.025,15.883 14.025,15.6C14.025,15.317 14.117,15.083 14.3,14.9L17.2,12H8C7.167,12 6.458,12.292 5.875,12.875C5.292,13.458 5,14.167 5,15V18C5,18.283 4.904,18.521 4.713,18.712C4.521,18.904 4.283,19 4,19Z"
android:fillColor="@android:color/white"/>
</vector>

View file

@ -1,28 +0,0 @@
<!--
~ 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="M17,9C17,10.1 16.1,11 15,11C13.9,11 13,10.1 13,9C13,7.9 13.9,7 15,7C16.1,7 17,7.9 17,9Z"
android:fillColor="@android:color/white"/>
<path
android:pathData="M5,3C3.9,3 3,3.9 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.9 20.1,3 19,3H5ZM19,5V19L5,19V15.8L9,11.8L16.2,19L19,19L10.4,10.4C9.6,9.6 8.4,9.6 7.6,10.4L5,13V5H19Z"
android:fillColor="@android:color/white"/>
</vector>

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