diff --git a/amethyst/build.gradle b/amethyst/build.gradle index 76fd56406..98d4127a9 100644 --- a/amethyst/build.gradle +++ b/amethyst/build.gradle @@ -263,7 +263,6 @@ dependencies { // Material 3 Design implementation libs.androidx.material3 - implementation libs.androidx.material.icons // Adaptive Layout / Two Pane implementation libs.androidx.material3.windowSize diff --git a/amethyst/src/fdroid/java/com/vitorpamplona/amethyst/ui/components/SelectNotificationProvider.kt b/amethyst/src/fdroid/java/com/vitorpamplona/amethyst/ui/components/SelectNotificationProvider.kt index b86af0db7..d0c5b3397 100644 --- a/amethyst/src/fdroid/java/com/vitorpamplona/amethyst/ui/components/SelectNotificationProvider.kt +++ b/amethyst/src/fdroid/java/com/vitorpamplona/amethyst/ui/components/SelectNotificationProvider.kt @@ -29,8 +29,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Check import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.Icon @@ -57,6 +55,8 @@ import com.halilibo.richtext.ui.RichTextStyle import com.halilibo.richtext.ui.material3.RichText import com.halilibo.richtext.ui.resolveDefaults import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.UiSettingsFlow import com.vitorpamplona.amethyst.service.notifications.PushDistributorHandler import com.vitorpamplona.amethyst.ui.screen.loggedIn.settings.SettingsRow @@ -159,7 +159,7 @@ fun SelectNotificationProvider(sharedPrefs: UiSettingsFlow) { verticalAlignment = Alignment.CenterVertically, ) { Icon( - imageVector = Icons.Default.Check, + symbol = MaterialSymbols.Check, contentDescription = null, ) Spacer(Modifier.width(8.dp)) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/crashreports/DisplayCrashMessages.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/crashreports/DisplayCrashMessages.kt index ee339922b..64c840a93 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/crashreports/DisplayCrashMessages.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/crashreports/DisplayCrashMessages.kt @@ -24,8 +24,6 @@ import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.text.selection.SelectionContainer -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Done import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.Icon @@ -39,6 +37,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.res.stringResource import com.vitorpamplona.amethyst.Amethyst import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.routeToMessage @@ -95,7 +95,7 @@ fun DisplayCrashMessages( verticalAlignment = Alignment.CenterVertically, ) { Icon( - imageVector = Icons.Outlined.Done, + symbol = MaterialSymbols.Done, contentDescription = stringRes(R.string.crashreport_found_send), ) Spacer(StdHorzSpacer) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/FullScreenButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/FullScreenButton.kt index 280f86c9f..046570539 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/FullScreenButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/FullScreenButton.kt @@ -27,8 +27,6 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ZoomOutMap import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -41,6 +39,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.tooling.preview.Preview import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange import com.vitorpamplona.amethyst.ui.theme.PinBottomIconSize @@ -86,7 +86,7 @@ fun FullScreenButton( modifier = Size50Modifier, ) { Icon( - imageVector = Icons.Default.ZoomOutMap, + symbol = MaterialSymbols.ZoomOutMap, contentDescription = stringRes(id = R.string.enter_picture_in_picture), modifier = modifier, tint = MaterialTheme.colorScheme.onBackground, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/MuteButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/MuteButton.kt index e33a001dd..39bc5fe50 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/MuteButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/MuteButton.kt @@ -27,9 +27,6 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.VolumeOff -import androidx.compose.material.icons.automirrored.filled.VolumeUp import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -43,6 +40,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.tooling.preview.Preview import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange import com.vitorpamplona.amethyst.ui.theme.Size30Modifier @@ -125,7 +124,7 @@ fun MuteButton( @Composable fun MutedIcon() { Icon( - imageVector = Icons.AutoMirrored.Filled.VolumeOff, + symbol = MaterialSymbols.AutoMirrored.VolumeOff, contentDescription = stringRes(id = R.string.muted_button), tint = MaterialTheme.colorScheme.onBackground, modifier = Size30Modifier, @@ -135,7 +134,7 @@ fun MutedIcon() { @Composable fun MuteIcon() { Icon( - imageVector = Icons.AutoMirrored.Filled.VolumeUp, + symbol = MaterialSymbols.AutoMirrored.VolumeUp, contentDescription = stringRes(id = R.string.mute_button), tint = MaterialTheme.colorScheme.onBackground, modifier = Size30Modifier, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/OverflowMenu.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/OverflowMenu.kt index 77cbaf2cd..f1306f315 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/OverflowMenu.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/OverflowMenu.kt @@ -27,15 +27,6 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.VolumeOff -import androidx.compose.material.icons.automirrored.filled.VolumeUp -import androidx.compose.material.icons.filled.MoreVert -import androidx.compose.material.icons.filled.PictureInPicture -import androidx.compose.material.icons.filled.SaveAlt -import androidx.compose.material.icons.filled.Settings -import androidx.compose.material.icons.filled.Share -import androidx.compose.material.icons.filled.ZoomOutMap import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -48,6 +39,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.tooling.preview.Preview import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.VideoPlayerAction import com.vitorpamplona.amethyst.ui.components.M3ActionDialog import com.vitorpamplona.amethyst.ui.components.M3ActionRow @@ -140,7 +133,7 @@ fun OverflowMenuButton( modifier = Size50Modifier, ) { Icon( - imageVector = Icons.Default.MoreVert, + symbol = MaterialSymbols.MoreVert, contentDescription = stringRes(R.string.more_options), tint = MaterialTheme.colorScheme.onBackground, modifier = Size20Modifier, @@ -159,7 +152,7 @@ fun OverflowMenuButton( VideoPlayerAction.Fullscreen -> { onFullscreenClick?.let { zoom -> M3ActionRow( - icon = Icons.Default.ZoomOutMap, + icon = MaterialSymbols.ZoomOutMap, text = stringRes(R.string.video_player_settings_action_fullscreen), ) { menuExpanded.value = false @@ -170,7 +163,7 @@ fun OverflowMenuButton( VideoPlayerAction.Mute -> { M3ActionRow( - icon = if (startingMuteState) Icons.AutoMirrored.Filled.VolumeOff else Icons.AutoMirrored.Filled.VolumeUp, + icon = if (startingMuteState) MaterialSymbols.AutoMirrored.VolumeOff else MaterialSymbols.AutoMirrored.VolumeUp, text = if (startingMuteState) stringRes(R.string.muted_button) else stringRes(R.string.mute_button), ) { menuExpanded.value = false @@ -180,7 +173,7 @@ fun OverflowMenuButton( VideoPlayerAction.Quality -> { M3ActionRow( - icon = Icons.Default.Settings, + icon = MaterialSymbols.Settings, text = stringRes(R.string.call_settings_video_quality), ) { menuExpanded.value = false @@ -190,7 +183,7 @@ fun OverflowMenuButton( VideoPlayerAction.Share -> { M3ActionRow( - icon = Icons.Default.Share, + icon = MaterialSymbols.Share, text = stringRes(R.string.share_or_save), ) { menuExpanded.value = false @@ -200,7 +193,7 @@ fun OverflowMenuButton( VideoPlayerAction.Download -> { M3ActionRow( - icon = Icons.Default.SaveAlt, + icon = MaterialSymbols.SaveAlt, text = stringRes(R.string.download_to_phone), ) { menuExpanded.value = false @@ -210,7 +203,7 @@ fun OverflowMenuButton( VideoPlayerAction.PictureInPicture -> { M3ActionRow( - icon = Icons.Default.PictureInPicture, + icon = MaterialSymbols.PictureInPicture, text = stringRes(R.string.picture_in_picture), ) { menuExpanded.value = false diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/PlayPauseButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/PlayPauseButton.kt index ae4682787..6ebdba4b4 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/PlayPauseButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/PlayPauseButton.kt @@ -28,9 +28,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Pause -import androidx.compose.material.icons.filled.PlayArrow import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -44,6 +41,8 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange import com.vitorpamplona.amethyst.ui.theme.PlayIconSize @@ -114,13 +113,13 @@ fun PlayPauseButton( ) { if (!isPlaying) { Icon( - imageVector = Icons.Default.PlayArrow, + symbol = MaterialSymbols.PlayArrow, modifier = Size50Modifier, contentDescription = stringRes(R.string.play), ) } else { Icon( - imageVector = Icons.Default.Pause, + symbol = MaterialSymbols.Pause, modifier = Size50Modifier, contentDescription = stringRes(R.string.pause), ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/RenderTopButtons.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/RenderTopButtons.kt index 02816fa75..4e612b3c4 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/RenderTopButtons.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/RenderTopButtons.kt @@ -29,10 +29,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.PictureInPicture -import androidx.compose.material.icons.filled.SaveAlt -import androidx.compose.material.icons.filled.Share import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -47,7 +43,6 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.tooling.preview.Preview import androidx.lifecycle.compose.collectAsStateWithLifecycle @@ -55,6 +50,9 @@ import androidx.media3.common.Player import androidx.media3.common.Tracks import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.richtext.MediaUrlVideo import com.vitorpamplona.amethyst.model.VideoButtonLocation import com.vitorpamplona.amethyst.model.VideoPlayerAction @@ -255,7 +253,7 @@ fun RenderTopButtons( VideoPlayerAction.Share -> { AnimatedTopBarIconButton( controllerVisible = controllerVisible, - imageVector = Icons.Default.Share, + symbol = MaterialSymbols.Share, contentDescription = stringRes(R.string.share_or_save), onClick = { shareDialogVisible.value = true }, ) @@ -264,7 +262,7 @@ fun RenderTopButtons( VideoPlayerAction.Download -> { AnimatedTopBarIconButton( controllerVisible = controllerVisible, - imageVector = Icons.Default.SaveAlt, + symbol = MaterialSymbols.SaveAlt, contentDescription = stringRes(R.string.download_to_phone), onClick = saveAction, ) @@ -273,7 +271,7 @@ fun RenderTopButtons( VideoPlayerAction.PictureInPicture -> { AnimatedTopBarIconButton( controllerVisible = controllerVisible, - imageVector = Icons.Default.PictureInPicture, + symbol = MaterialSymbols.PictureInPicture, contentDescription = stringRes(R.string.picture_in_picture), onClick = onPictureInPictureClick, ) @@ -323,7 +321,7 @@ fun RenderTopButtons( @Composable internal fun AnimatedTopBarIconButton( controllerVisible: State, - imageVector: ImageVector, + symbol: MaterialSymbol, contentDescription: String, onClick: () -> Unit, modifier: Modifier = Modifier, @@ -348,7 +346,7 @@ internal fun AnimatedTopBarIconButton( modifier = Size50Modifier, ) { Icon( - imageVector = imageVector, + symbol = symbol, contentDescription = contentDescription, tint = MaterialTheme.colorScheme.onBackground, modifier = Size20Modifier, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/SaveMediaButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/SaveMediaButton.kt index c3b209ec6..8ec005c43 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/SaveMediaButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/SaveMediaButton.kt @@ -31,8 +31,6 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Download import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -50,6 +48,8 @@ import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.google.accompanist.permissions.isGranted import com.google.accompanist.permissions.rememberPermissionState import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange import com.vitorpamplona.amethyst.ui.theme.PinBottomIconSize @@ -130,7 +130,7 @@ fun SaveMediaButton(onSaveClick: (localContext: Context) -> Unit) { modifier = Size50Modifier, ) { Icon( - imageVector = Icons.Default.Download, + symbol = MaterialSymbols.Download, modifier = Size20Modifier, contentDescription = stringRes(R.string.download_to_phone), ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/ShareButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/ShareButton.kt index 4e96d9f32..2b02ceb6e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/ShareButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/ShareButton.kt @@ -27,8 +27,6 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Share import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -42,6 +40,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.tooling.preview.Preview import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange import com.vitorpamplona.amethyst.ui.theme.PinBottomIconSize @@ -98,7 +98,7 @@ fun ShareButton(innerAction: @Composable (MutableState, () -> Unit) -> modifier = Size50Modifier, ) { Icon( - imageVector = Icons.Default.Share, + symbol = MaterialSymbols.Share, modifier = Size20Modifier, contentDescription = stringRes(R.string.share_or_save), ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/SkipButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/SkipButton.kt index a30e6fa98..c03dfaaf6 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/SkipButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/SkipButton.kt @@ -26,9 +26,6 @@ import androidx.compose.animation.fadeOut import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Forward10 -import androidx.compose.material.icons.filled.Replay10 import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.runtime.Composable @@ -38,6 +35,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.service.playback.composable.SKIP_SECONDS import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange @@ -88,9 +87,9 @@ fun SkipButton( isForward: Boolean, onClick: () -> Unit, ) { - val icon = if (isForward) Icons.Default.Forward10 else Icons.Default.Replay10 + val icon = if (isForward) MaterialSymbols.Forward10 else MaterialSymbols.Replay10 val label = if (isForward) stringRes(R.string.skip_forward, SKIP_SECONDS) else stringRes(R.string.skip_back, SKIP_SECONDS) IconButton(onClick = onClick, modifier = Modifier.size(48.dp)) { - Icon(imageVector = icon, contentDescription = label, tint = Color.White, modifier = Modifier.size(32.dp)) + Icon(symbol = icon, contentDescription = label, tint = Color.White, modifier = Modifier.size(32.dp)) } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/VideoQualityButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/VideoQualityButton.kt index cc2942b04..9e79c6f74 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/VideoQualityButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/playback/composable/controls/VideoQualityButton.kt @@ -30,8 +30,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -56,6 +54,8 @@ import androidx.media3.common.Tracks import androidx.media3.common.VideoSize import androidx.media3.common.util.UnstableApi import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.PinBottomIconSize import com.vitorpamplona.amethyst.ui.theme.Size20Modifier @@ -108,7 +108,7 @@ fun VideoQualityButton( modifier = Size50Modifier, ) { Icon( - imageVector = Icons.Default.Settings, + symbol = MaterialSymbols.Settings, contentDescription = stringRes(id = R.string.call_settings_video_quality), tint = MaterialTheme.colorScheme.onBackground, modifier = Size20Modifier, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/notifyCommand/compose/NotifyRequestDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/notifyCommand/compose/NotifyRequestDialog.kt index 12842f060..feb01ad59 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/notifyCommand/compose/NotifyRequestDialog.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/notifyCommand/compose/NotifyRequestDialog.kt @@ -24,8 +24,6 @@ import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Done import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.ButtonColors @@ -39,6 +37,8 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.EmptyTagList import com.vitorpamplona.amethyst.ui.components.TranslatableRichTextViewer import com.vitorpamplona.amethyst.ui.navigation.navs.INav @@ -87,7 +87,7 @@ fun NotifyRequestDialog( verticalAlignment = Alignment.CenterVertically, ) { Icon( - imageVector = Icons.Outlined.Done, + symbol = MaterialSymbols.Done, contentDescription = null, ) Spacer(StdHorzSpacer) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/EditPostView.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/EditPostView.kt index 70f1a8065..feaf3f2e5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/EditPostView.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/EditPostView.kt @@ -37,8 +37,6 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.CurrencyBitcoin import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -74,6 +72,8 @@ import androidx.compose.ui.window.DialogProperties import androidx.lifecycle.viewmodel.compose.viewModel import coil3.compose.AsyncImage import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.richtext.RichTextParser import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.service.playback.composable.VideoView @@ -457,14 +457,14 @@ private fun AddLnInvoiceButton( ) { if (!isLnInvoiceActive) { Icon( - imageVector = Icons.Default.CurrencyBitcoin, + symbol = MaterialSymbols.CurrencyBitcoin, contentDescription = stringRes(id = R.string.add_bitcoin_invoice), modifier = Modifier.size(20.dp), tint = MaterialTheme.colorScheme.onBackground, ) } else { Icon( - imageVector = Icons.Default.CurrencyBitcoin, + symbol = MaterialSymbols.CurrencyBitcoin, contentDescription = stringRes(id = R.string.cancel_bitcoin_invoice), modifier = Modifier.size(20.dp), tint = BitcoinOrange, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/InformationDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/InformationDialog.kt index 2b4a9f413..69b96a61e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/InformationDialog.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/InformationDialog.kt @@ -27,8 +27,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.text.selection.SelectionContainer -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Done import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.ButtonColors @@ -44,6 +42,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalClipboard import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.components.toasts.ThrowableToastMsg import com.vitorpamplona.amethyst.ui.components.toasts.ThrowableToastMsg2 import com.vitorpamplona.amethyst.ui.components.util.setText @@ -141,7 +141,7 @@ fun InformationDialog( verticalAlignment = Alignment.CenterVertically, ) { Icon( - imageVector = Icons.Outlined.Done, + symbol = MaterialSymbols.Done, contentDescription = null, ) Spacer(StdHorzSpacer) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewUserMetadataScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewUserMetadataScreen.kt index b4ad1a4e6..7fbe7b5a1 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewUserMetadataScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewUserMetadataScreen.kt @@ -35,9 +35,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ExpandLess -import androidx.compose.material.icons.filled.ExpandMore import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -57,6 +54,8 @@ import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.actions.uploads.SelectSingleFromGallery import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.topbars.SavingTopBar @@ -347,7 +346,7 @@ private fun ExpandableSection( modifier = Modifier.weight(1f), ) Icon( - imageVector = if (expanded.value) Icons.Default.ExpandLess else Icons.Default.ExpandMore, + symbol = if (expanded.value) MaterialSymbols.ExpandLess else MaterialSymbols.ExpandMore, contentDescription = if (expanded.value) "Collapse" else "Expand", tint = MaterialTheme.colorScheme.placeholderText, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/mediaServers/AllMediaServersLIstView.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/mediaServers/AllMediaServersLIstView.kt index ddab82030..aba5490c8 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/mediaServers/AllMediaServersLIstView.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/mediaServers/AllMediaServersLIstView.kt @@ -29,9 +29,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.itemsIndexed -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.Add -import androidx.compose.material.icons.rounded.Delete import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -44,6 +41,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.screen.loggedIn.relays.SettingsCategory import com.vitorpamplona.amethyst.ui.screen.loggedIn.relays.SettingsCategoryWithButton import com.vitorpamplona.amethyst.ui.stringRes @@ -209,7 +208,7 @@ fun MediaServerEntry( }, ) { Icon( - imageVector = if (isAmethystDefault) Icons.Rounded.Add else Icons.Rounded.Delete, + symbol = if (isAmethystDefault) MaterialSymbols.Add else MaterialSymbols.Delete, contentDescription = if (isAmethystDefault) { stringRes(id = R.string.add_media_server) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/paymentTargets/PaymentTargetsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/paymentTargets/PaymentTargetsScreen.kt index 25905f7a1..dd51ccfb2 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/paymentTargets/PaymentTargetsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/paymentTargets/PaymentTargetsScreen.kt @@ -31,8 +31,6 @@ import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.Delete import androidx.compose.material3.Button import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -55,6 +53,8 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.topbars.SavingTopBar import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @@ -203,7 +203,7 @@ fun PaymentTargetEntry( } IconButton(onClick = onDelete) { Icon( - imageVector = Icons.Rounded.Delete, + symbol = MaterialSymbols.Delete, contentDescription = stringRes(id = R.string.delete_payment_target), ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/RecordVoiceButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/RecordVoiceButton.kt index c4ae7a504..f2ce22a3b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/RecordVoiceButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/RecordVoiceButton.kt @@ -26,8 +26,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Mic import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable @@ -41,6 +39,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes @Composable @@ -91,7 +91,7 @@ fun RecordVoiceButton( // Microphone icon Icon( - imageVector = Icons.Default.Mic, + symbol = MaterialSymbols.Mic, contentDescription = stringRes(id = R.string.record_a_message), modifier = Modifier.height(22.dp), tint = diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/RecordingIndicators.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/RecordingIndicators.kt index 1fb909cc3..415d4fd64 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/RecordingIndicators.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/RecordingIndicators.kt @@ -35,8 +35,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Stop import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -51,6 +49,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes /** @@ -228,7 +228,7 @@ fun FloatingRecordingIndicator( ) Icon( - imageVector = Icons.Default.Stop, + symbol = MaterialSymbols.Stop, contentDescription = recordingLabel, tint = Color.White, modifier = diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/SelectFromFiles.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/SelectFromFiles.kt index 7ed03deb2..d7c317600 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/SelectFromFiles.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/SelectFromFiles.kt @@ -24,8 +24,6 @@ import android.net.Uri import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.foundation.layout.height -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AttachFile import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.runtime.Composable @@ -39,6 +37,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.components.LoadingAnimation import com.vitorpamplona.amethyst.ui.stringRes import kotlinx.collections.immutable.ImmutableList @@ -83,7 +83,7 @@ private fun FileSelectButton( ) { if (!isUploading) { Icon( - imageVector = Icons.Default.AttachFile, + symbol = MaterialSymbols.AttachFile, contentDescription = stringRes(id = R.string.upload_file), modifier = Modifier.height(20.dp), tint = tint, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/SelectFromGallery.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/SelectFromGallery.kt index 74ebb0741..0963720aa 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/SelectFromGallery.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/SelectFromGallery.kt @@ -25,8 +25,6 @@ import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.PickVisualMediaRequest import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.foundation.layout.height -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AddPhotoAlternate import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.runtime.Composable @@ -41,6 +39,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.components.LoadingAnimation import com.vitorpamplona.amethyst.ui.stringRes import kotlinx.collections.immutable.ImmutableList @@ -128,7 +128,7 @@ private fun GallerySelectButton( ) { if (!isUploading) { Icon( - imageVector = Icons.Default.AddPhotoAlternate, + symbol = MaterialSymbols.AddPhotoAlternate, contentDescription = stringRes(id = R.string.upload_image), modifier = Modifier.height(25.dp), tint = tint, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/ShowImageUploadItem.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/ShowImageUploadItem.kt index f7c153611..6ac6807f6 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/ShowImageUploadItem.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/ShowImageUploadItem.kt @@ -38,9 +38,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AudioFile -import androidx.compose.material.icons.filled.PictureAsPdf import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -65,6 +62,9 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import coil3.compose.AsyncImage import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.service.playback.composable.VideoView import com.vitorpamplona.amethyst.service.uploads.MultiOrchestrator import com.vitorpamplona.amethyst.service.uploads.UploadOrchestrator @@ -126,12 +126,12 @@ fun ShowImageGallery( ) } else if (media.isAudio() == true) { FilePreviewPlaceholder( - icon = Icons.Default.AudioFile, + icon = MaterialSymbols.AudioFile, label = media.mimeType ?: "audio/*", ) } else if (media.isDocument()) { FilePreviewPlaceholder( - icon = Icons.Default.PictureAsPdf, + icon = MaterialSymbols.PictureAsPdf, label = media.mimeType ?: "application/pdf", ) } else if (media.isVideo() == true && Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -279,7 +279,7 @@ fun UploadingState( @Composable fun FilePreviewPlaceholder( - icon: androidx.compose.ui.graphics.vector.ImageVector, + icon: MaterialSymbol, label: String, ) { Box( @@ -295,7 +295,7 @@ fun FilePreviewPlaceholder( modifier = Modifier.padding(8.dp), ) { Icon( - imageVector = icon, + symbol = icon, contentDescription = label, modifier = Modifier.size(40.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/TakePicture.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/TakePicture.kt index 0e11cde91..affec7bc8 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/TakePicture.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/TakePicture.kt @@ -27,9 +27,6 @@ import android.os.Environment import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.foundation.layout.height -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.CameraAlt -import androidx.compose.material.icons.filled.Videocam import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -48,6 +45,8 @@ import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.google.accompanist.permissions.isGranted import com.google.accompanist.permissions.rememberPermissionState import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf @@ -129,7 +128,7 @@ fun PictureButton(onClick: () -> Unit) { onClick = onClick, ) { Icon( - imageVector = Icons.Default.CameraAlt, + symbol = MaterialSymbols.CameraAlt, contentDescription = stringRes(id = R.string.take_a_picture), modifier = Modifier.height(22.dp), tint = MaterialTheme.colorScheme.onBackground, @@ -216,7 +215,7 @@ fun VideoButton(onClick: () -> Unit) { onClick = onClick, ) { Icon( - imageVector = Icons.Default.Videocam, + symbol = MaterialSymbols.Videocam, contentDescription = stringRes(id = R.string.record_a_video), modifier = Modifier.height(22.dp), tint = MaterialTheme.colorScheme.onBackground, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/VoiceMessagePreview.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/VoiceMessagePreview.kt index 43bb07f54..2ae1b52d4 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/VoiceMessagePreview.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/VoiceMessagePreview.kt @@ -32,12 +32,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Close -import androidx.compose.material.icons.filled.Mic -import androidx.compose.material.icons.filled.Pause -import androidx.compose.material.icons.filled.PlayArrow -import androidx.compose.material.icons.filled.Stop import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -56,6 +50,8 @@ import androidx.compose.ui.graphics.Brush import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.components.AudioWaveformReadOnly import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.quartz.nipA0VoiceMessages.AudioMeta @@ -125,7 +121,7 @@ fun VoiceMessagePreview( modifier = Modifier.size(48.dp), ) { Icon( - imageVector = if (isPlaying) Icons.Default.Pause else Icons.Default.PlayArrow, + symbol = if (isPlaying) MaterialSymbols.Pause else MaterialSymbols.PlayArrow, contentDescription = if (isPlaying) stringRes(context, R.string.pause) else stringRes(context, R.string.play), tint = MaterialTheme.colorScheme.primary, ) @@ -168,7 +164,7 @@ fun VoiceMessagePreview( modifier = Modifier.size(48.dp), ) { Icon( - imageVector = Icons.Default.Close, + symbol = MaterialSymbols.Close, contentDescription = stringRes(context, R.string.remove), tint = MaterialTheme.colorScheme.onSurfaceVariant, ) @@ -199,7 +195,7 @@ private fun ReRecordButton( horizontalArrangement = Arrangement.spacedBy(8.dp), ) { Icon( - imageVector = Icons.Default.Mic, + symbol = MaterialSymbols.Mic, contentDescription = stringRes(id = R.string.record_a_message), tint = MaterialTheme.colorScheme.onSurfaceVariant, ) @@ -224,9 +220,9 @@ private fun ReRecordButton( } val icon = if (isRecording) { - Icons.Default.Stop + MaterialSymbols.Stop } else { - Icons.Default.Mic + MaterialSymbols.Mic } val label = if (isRecording) { @@ -246,7 +242,7 @@ private fun ReRecordButton( horizontalArrangement = Arrangement.spacedBy(8.dp), ) { Icon( - imageVector = icon, + symbol = icon, contentDescription = iconDescription, tint = contentColor, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/broadcast/BroadcastBanner.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/broadcast/BroadcastBanner.kt index a5b42e108..753b4d347 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/broadcast/BroadcastBanner.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/broadcast/BroadcastBanner.kt @@ -38,11 +38,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.Error -import androidx.compose.material.icons.filled.Refresh -import androidx.compose.material.icons.filled.Sync import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.LinearProgressIndicator @@ -59,6 +54,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.commons.defaults.Constants +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.service.broadcast.BroadcastEvent import com.vitorpamplona.amethyst.service.broadcast.BroadcastStatus import com.vitorpamplona.amethyst.service.broadcast.RelayResult @@ -137,7 +134,7 @@ private fun SingleBroadcastContent(broadcast: BroadcastEvent) { modifier = Modifier.fillMaxWidth(), ) { Icon( - imageVector = Icons.Default.Sync, + symbol = MaterialSymbols.Sync, contentDescription = stringRes(R.string.broadcasting), tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(18.dp), @@ -195,7 +192,7 @@ private fun MultipleBroadcastsContent(broadcasts: ImmutableList) modifier = Modifier.fillMaxWidth(), ) { Icon( - imageVector = Icons.Default.Sync, + symbol = MaterialSymbols.Sync, contentDescription = stringRes(R.string.broadcasting), tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(18.dp), @@ -255,15 +252,15 @@ fun CompletedBroadcastContent( val (statusIcon, iconTint) = when (broadcast.status) { - BroadcastStatus.SUCCESS -> Icons.Default.CheckCircle to successColor - BroadcastStatus.PARTIAL -> Icons.Default.Error to warningColor - BroadcastStatus.FAILED -> Icons.Default.Error to MaterialTheme.colorScheme.error - BroadcastStatus.IN_PROGRESS -> Icons.Default.CheckCircle to MaterialTheme.colorScheme.primary + BroadcastStatus.SUCCESS -> MaterialSymbols.CheckCircle to successColor + BroadcastStatus.PARTIAL -> MaterialSymbols.Error to warningColor + BroadcastStatus.FAILED -> MaterialSymbols.Error to MaterialTheme.colorScheme.error + BroadcastStatus.IN_PROGRESS -> MaterialSymbols.CheckCircle to MaterialTheme.colorScheme.primary } // Small status icon (like BroadcastBanner) Icon( - imageVector = statusIcon, + symbol = statusIcon, contentDescription = broadcast.status.name, tint = iconTint, modifier = Modifier.size(18.dp), @@ -307,7 +304,7 @@ fun CompletedBroadcastContent( modifier = Modifier.size(22.dp), ) { Icon( - imageVector = Icons.Default.Refresh, + symbol = MaterialSymbols.Refresh, contentDescription = stringRes(R.string.retry_failed), tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(18.dp), @@ -350,16 +347,16 @@ fun MultipleCompletedBroadcastContent( val (statusIcon, iconTint) = if (allSuccess) { - Icons.Default.CheckCircle to successColor + MaterialSymbols.CheckCircle to successColor } else if (allFailed) { - Icons.Default.Error to MaterialTheme.colorScheme.error + MaterialSymbols.Error to MaterialTheme.colorScheme.error } else { - Icons.Default.Error to warningColor + MaterialSymbols.Error to warningColor } // Small status icon (like BroadcastBanner) Icon( - imageVector = statusIcon, + symbol = statusIcon, contentDescription = if (allSuccess) { stringRes(R.string.bradcasting_result_success) @@ -410,7 +407,7 @@ fun MultipleCompletedBroadcastContent( modifier = Modifier.size(22.dp), ) { Icon( - imageVector = Icons.Default.Refresh, + symbol = MaterialSymbols.Refresh, contentDescription = stringRes(R.string.retry_failed), tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(18.dp), diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/broadcast/BroadcastDetailsSheet.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/broadcast/BroadcastDetailsSheet.kt index 7d395c5b5..181c81765 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/broadcast/BroadcastDetailsSheet.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/broadcast/BroadcastDetailsSheet.kt @@ -42,13 +42,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.Error -import androidx.compose.material.icons.filled.ExpandLess -import androidx.compose.material.icons.filled.ExpandMore -import androidx.compose.material.icons.filled.HourglassEmpty -import androidx.compose.material.icons.filled.Refresh import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ExperimentalMaterial3Api @@ -78,6 +71,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.commons.defaults.Constants +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.service.broadcast.BroadcastEvent import com.vitorpamplona.amethyst.service.broadcast.BroadcastStatus import com.vitorpamplona.amethyst.service.broadcast.RelayResult @@ -252,7 +247,7 @@ private fun BroadcastSection( ) Icon( - imageVector = if (isExpanded) Icons.Default.ExpandLess else Icons.Default.ExpandMore, + symbol = if (isExpanded) MaterialSymbols.ExpandLess else MaterialSymbols.ExpandMore, contentDescription = if (isExpanded) stringRes(R.string.collapse) else stringRes(R.string.expand), tint = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.size(24.dp), @@ -289,7 +284,7 @@ private fun BroadcastSection( ), ) { Icon( - imageVector = Icons.Default.Refresh, + symbol = MaterialSymbols.Refresh, contentDescription = null, modifier = Modifier.size(18.dp), ) @@ -318,14 +313,14 @@ private fun StatusIcon( ) { val (icon, tint, shouldRotate) = when (status) { - BroadcastStatus.SUCCESS -> Triple(Icons.Default.CheckCircle, Color(0xFF22C55E), false) - BroadcastStatus.PARTIAL -> Triple(Icons.Default.Error, Color(0xFFF59E0B), false) - BroadcastStatus.FAILED -> Triple(Icons.Default.Error, MaterialTheme.colorScheme.error, false) - BroadcastStatus.IN_PROGRESS -> Triple(Icons.Default.HourglassEmpty, MaterialTheme.colorScheme.primary, true) + BroadcastStatus.SUCCESS -> Triple(MaterialSymbols.CheckCircle, Color(0xFF22C55E), false) + BroadcastStatus.PARTIAL -> Triple(MaterialSymbols.Error, Color(0xFFF59E0B), false) + BroadcastStatus.FAILED -> Triple(MaterialSymbols.Error, MaterialTheme.colorScheme.error, false) + BroadcastStatus.IN_PROGRESS -> Triple(MaterialSymbols.HourglassEmpty, MaterialTheme.colorScheme.primary, true) } Icon( - imageVector = icon, + symbol = icon, contentDescription = status.name, tint = tint, modifier = @@ -362,15 +357,15 @@ private fun RelayResultRow( // Status icon val (icon, tint, shouldRotate) = when (result) { - is RelayResult.Success -> Triple(Icons.Default.CheckCircle, successColor, false) - is RelayResult.Error -> Triple(Icons.Default.Error, errorColor, false) - is RelayResult.Timeout -> Triple(Icons.Default.Error, warningColor, false) - is RelayResult.Pending -> Triple(Icons.Default.HourglassEmpty, MaterialTheme.colorScheme.onSurfaceVariant, true) - is RelayResult.Retrying -> Triple(Icons.Default.HourglassEmpty, MaterialTheme.colorScheme.primary, true) + is RelayResult.Success -> Triple(MaterialSymbols.CheckCircle, successColor, false) + is RelayResult.Error -> Triple(MaterialSymbols.Error, errorColor, false) + is RelayResult.Timeout -> Triple(MaterialSymbols.Error, warningColor, false) + is RelayResult.Pending -> Triple(MaterialSymbols.HourglassEmpty, MaterialTheme.colorScheme.onSurfaceVariant, true) + is RelayResult.Retrying -> Triple(MaterialSymbols.HourglassEmpty, MaterialTheme.colorScheme.primary, true) } Icon( - imageVector = icon, + symbol = icon, contentDescription = null, tint = tint, modifier = @@ -437,7 +432,7 @@ private fun RelayResultRow( modifier = Modifier.size(32.dp), ) { Icon( - imageVector = Icons.Default.Refresh, + symbol = MaterialSymbols.Refresh, contentDescription = stringResource(R.string.retry), tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(18.dp), diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/call/CallScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/call/CallScreen.kt index 989d96dc2..1d55595b0 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/call/CallScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/call/CallScreen.kt @@ -36,9 +36,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.statusBars import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Call -import androidx.compose.material.icons.filled.CallEnd import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -59,6 +56,8 @@ import androidx.compose.ui.unit.sp import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.commons.call.CallManager import com.vitorpamplona.amethyst.commons.call.CallState +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.call.session.CallSession import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.stringRes @@ -256,7 +255,7 @@ private fun CallInProgressUI( modifier = Modifier.size(64.dp), ) { Icon( - Icons.Default.CallEnd, + MaterialSymbols.CallEnd, contentDescription = stringRes(R.string.call_hangup), tint = Color.White, modifier = Modifier.size(32.dp), @@ -321,7 +320,7 @@ private fun IncomingCallUI( modifier = Modifier.size(64.dp), ) { Icon( - Icons.Default.CallEnd, + MaterialSymbols.CallEnd, contentDescription = stringRes(R.string.call_reject), tint = Color.White, modifier = Modifier.size(32.dp), @@ -334,7 +333,7 @@ private fun IncomingCallUI( modifier = Modifier.size(64.dp), ) { Icon( - Icons.Default.Call, + MaterialSymbols.Call, contentDescription = stringRes(R.string.call_accept), tint = Color.White, modifier = Modifier.size(32.dp), diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/call/CallScreenPreviews.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/call/CallScreenPreviews.kt index 3bdb868f7..5509e4a50 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/call/CallScreenPreviews.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/call/CallScreenPreviews.kt @@ -32,18 +32,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.VolumeOff -import androidx.compose.material.icons.automirrored.filled.VolumeUp -import androidx.compose.material.icons.filled.BluetoothAudio -import androidx.compose.material.icons.filled.Call -import androidx.compose.material.icons.filled.CallEnd -import androidx.compose.material.icons.filled.Mic -import androidx.compose.material.icons.filled.MicOff -import androidx.compose.material.icons.filled.Person -import androidx.compose.material.icons.filled.PersonAdd -import androidx.compose.material.icons.filled.Videocam -import androidx.compose.material.icons.filled.VideocamOff import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -57,6 +45,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.theme.ThemeComparisonColumn // ---- Shared building blocks for previews ---- @@ -67,7 +57,7 @@ private fun PreviewAvatar( tint: Color = MaterialTheme.colorScheme.onSurfaceVariant, ) { Icon( - Icons.Default.Person, + MaterialSymbols.Person, contentDescription = null, modifier = modifier.size(120.dp), tint = tint, @@ -91,7 +81,7 @@ private fun PreviewGroupAvatars( } if (i < 3 || count <= 4) { Icon( - Icons.Default.Person, + MaterialSymbols.Person, contentDescription = null, modifier = Modifier.size(halfSize).align(alignment), tint = tint, @@ -133,7 +123,7 @@ private fun PreviewCallControls( ) { IconButton(onClick = {}, modifier = Modifier.size(56.dp)) { Icon( - imageVector = if (isMuted) Icons.Default.MicOff else Icons.Default.Mic, + symbol = if (isMuted) MaterialSymbols.MicOff else MaterialSymbols.Mic, contentDescription = "Mute", tint = if (isMuted) Color.Red else Color.White, modifier = Modifier.size(28.dp), @@ -141,7 +131,7 @@ private fun PreviewCallControls( } IconButton(onClick = {}, modifier = Modifier.size(56.dp)) { Icon( - imageVector = if (isVideoEnabled) Icons.Default.Videocam else Icons.Default.VideocamOff, + symbol = if (isVideoEnabled) MaterialSymbols.Videocam else MaterialSymbols.VideocamOff, contentDescription = "Camera", tint = if (!isVideoEnabled) Color.Red else Color.White, modifier = Modifier.size(28.dp), @@ -149,11 +139,11 @@ private fun PreviewCallControls( } IconButton(onClick = {}, modifier = Modifier.size(56.dp)) { Icon( - imageVector = + symbol = when (audioRoute) { - "speaker" -> Icons.AutoMirrored.Filled.VolumeUp - "bluetooth" -> Icons.Default.BluetoothAudio - else -> Icons.AutoMirrored.Filled.VolumeOff + "speaker" -> MaterialSymbols.AutoMirrored.VolumeUp + "bluetooth" -> MaterialSymbols.BluetoothAudio + else -> MaterialSymbols.AutoMirrored.VolumeOff }, contentDescription = "Audio route", tint = @@ -168,7 +158,7 @@ private fun PreviewCallControls( if (showAddParticipant) { IconButton(onClick = {}, modifier = Modifier.size(56.dp)) { Icon( - Icons.Default.PersonAdd, + MaterialSymbols.PersonAdd, contentDescription = "Add participant", tint = Color.White, modifier = Modifier.size(28.dp), @@ -183,7 +173,7 @@ private fun PreviewCallControls( shape = CircleShape, modifier = Modifier.size(64.dp), ) { - Icon(Icons.Default.CallEnd, "Hang up", tint = Color.White, modifier = Modifier.size(32.dp)) + Icon(MaterialSymbols.CallEnd, "Hang up", tint = Color.White, modifier = Modifier.size(32.dp)) } } } @@ -218,7 +208,7 @@ private fun PreviewCallInProgress( shape = CircleShape, modifier = Modifier.size(64.dp), ) { - Icon(Icons.Default.CallEnd, "Hang up", tint = Color.White, modifier = Modifier.size(32.dp)) + Icon(MaterialSymbols.CallEnd, "Hang up", tint = Color.White, modifier = Modifier.size(32.dp)) } } } @@ -261,7 +251,7 @@ fun PreviewCallingGroupScreen() { shape = CircleShape, modifier = Modifier.size(64.dp), ) { - Icon(Icons.Default.CallEnd, "Hang up", tint = Color.White, modifier = Modifier.size(32.dp)) + Icon(MaterialSymbols.CallEnd, "Hang up", tint = Color.White, modifier = Modifier.size(32.dp)) } } } @@ -303,10 +293,10 @@ fun PreviewIncomingVoiceCallScreen() { Spacer(modifier = Modifier.height(48.dp)) Row(horizontalArrangement = Arrangement.spacedBy(48.dp)) { FloatingActionButton(onClick = {}, containerColor = Color.Red, shape = CircleShape, modifier = Modifier.size(64.dp)) { - Icon(Icons.Default.CallEnd, "Reject", tint = Color.White, modifier = Modifier.size(32.dp)) + Icon(MaterialSymbols.CallEnd, "Reject", tint = Color.White, modifier = Modifier.size(32.dp)) } FloatingActionButton(onClick = {}, containerColor = Color(0xFF4CAF50), shape = CircleShape, modifier = Modifier.size(64.dp)) { - Icon(Icons.Default.Call, "Accept", tint = Color.White, modifier = Modifier.size(32.dp)) + Icon(MaterialSymbols.Call, "Accept", tint = Color.White, modifier = Modifier.size(32.dp)) } } } @@ -339,10 +329,10 @@ fun PreviewIncomingVideoCallScreen() { Spacer(modifier = Modifier.height(48.dp)) Row(horizontalArrangement = Arrangement.spacedBy(48.dp)) { FloatingActionButton(onClick = {}, containerColor = Color.Red, shape = CircleShape, modifier = Modifier.size(64.dp)) { - Icon(Icons.Default.CallEnd, "Reject", tint = Color.White, modifier = Modifier.size(32.dp)) + Icon(MaterialSymbols.CallEnd, "Reject", tint = Color.White, modifier = Modifier.size(32.dp)) } FloatingActionButton(onClick = {}, containerColor = Color(0xFF4CAF50), shape = CircleShape, modifier = Modifier.size(64.dp)) { - Icon(Icons.Default.Call, "Accept", tint = Color.White, modifier = Modifier.size(32.dp)) + Icon(MaterialSymbols.Call, "Accept", tint = Color.White, modifier = Modifier.size(32.dp)) } } } @@ -375,10 +365,10 @@ fun PreviewIncomingGroupCallScreen() { Spacer(modifier = Modifier.height(48.dp)) Row(horizontalArrangement = Arrangement.spacedBy(48.dp)) { FloatingActionButton(onClick = {}, containerColor = Color.Red, shape = CircleShape, modifier = Modifier.size(64.dp)) { - Icon(Icons.Default.CallEnd, "Reject", tint = Color.White, modifier = Modifier.size(32.dp)) + Icon(MaterialSymbols.CallEnd, "Reject", tint = Color.White, modifier = Modifier.size(32.dp)) } FloatingActionButton(onClick = {}, containerColor = Color(0xFF4CAF50), shape = CircleShape, modifier = Modifier.size(64.dp)) { - Icon(Icons.Default.Call, "Accept", tint = Color.White, modifier = Modifier.size(32.dp)) + Icon(MaterialSymbols.Call, "Accept", tint = Color.White, modifier = Modifier.size(32.dp)) } } } @@ -589,7 +579,7 @@ fun PreviewPipCallUI() { horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center, ) { - Icon(Icons.Default.Person, contentDescription = null, modifier = Modifier.size(48.dp)) + Icon(MaterialSymbols.Person, contentDescription = null, modifier = Modifier.size(48.dp)) Spacer(modifier = Modifier.height(4.dp)) Text("Calling\u2026", fontSize = 10.sp, color = MaterialTheme.colorScheme.onSurfaceVariant) } @@ -612,7 +602,7 @@ fun PreviewPipConnectedCallUI() { horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center, ) { - Icon(Icons.Default.Person, contentDescription = null, modifier = Modifier.size(48.dp), tint = Color.White.copy(alpha = 0.5f)) + Icon(MaterialSymbols.Person, contentDescription = null, modifier = Modifier.size(48.dp), tint = Color.White.copy(alpha = 0.5f)) Spacer(modifier = Modifier.height(4.dp)) Text("02:45", fontSize = 10.sp, color = Color.White.copy(alpha = 0.7f)) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/call/ConnectedCallUI.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/call/ConnectedCallUI.kt index d85fd6ffa..39509482c 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/call/ConnectedCallUI.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/call/ConnectedCallUI.kt @@ -36,18 +36,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.statusBars import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.VolumeUp -import androidx.compose.material.icons.filled.BluetoothAudio -import androidx.compose.material.icons.filled.CallEnd -import androidx.compose.material.icons.filled.CameraFront -import androidx.compose.material.icons.filled.CameraRear -import androidx.compose.material.icons.filled.Mic -import androidx.compose.material.icons.filled.MicOff -import androidx.compose.material.icons.filled.PersonAdd -import androidx.compose.material.icons.filled.Videocam -import androidx.compose.material.icons.filled.VideocamOff -import androidx.compose.material.icons.outlined.Hearing import androidx.compose.material3.AlertDialog import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon @@ -70,6 +58,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.commons.call.CallState +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.service.call.AudioRoute import com.vitorpamplona.amethyst.ui.call.session.CallSession import com.vitorpamplona.amethyst.ui.note.creators.userSuggestions.ShowUserSuggestionList @@ -257,7 +247,7 @@ private fun CallControls( ) { IconButton(onClick = onToggleMute, modifier = Modifier.size(56.dp)) { Icon( - imageVector = if (isAudioMuted) Icons.Default.MicOff else Icons.Default.Mic, + symbol = if (isAudioMuted) MaterialSymbols.MicOff else MaterialSymbols.Mic, contentDescription = stringRes(if (isAudioMuted) R.string.call_unmute else R.string.call_mute), tint = if (isAudioMuted) Color.Red else Color.White, modifier = Modifier.size(28.dp), @@ -265,7 +255,7 @@ private fun CallControls( } IconButton(onClick = onToggleVideo, modifier = Modifier.size(56.dp)) { Icon( - imageVector = if (isVideoEnabled) Icons.Default.Videocam else Icons.Default.VideocamOff, + symbol = if (isVideoEnabled) MaterialSymbols.Videocam else MaterialSymbols.VideocamOff, contentDescription = stringRes(if (isVideoEnabled) R.string.call_camera_off else R.string.call_camera_on), tint = if (!isVideoEnabled) Color.Red else Color.White, modifier = Modifier.size(28.dp), @@ -274,11 +264,11 @@ private fun CallControls( if (isVideoEnabled) { IconButton(onClick = onSwitchCamera, modifier = Modifier.size(56.dp)) { Icon( - imageVector = + symbol = if (isFrontCamera) { - Icons.Default.CameraRear + MaterialSymbols.CameraRear } else { - Icons.Default.CameraFront + MaterialSymbols.CameraFront }, contentDescription = stringRes(R.string.call_switch_camera), tint = Color.White, @@ -288,11 +278,11 @@ private fun CallControls( } IconButton(onClick = onCycleAudioRoute, modifier = Modifier.size(56.dp)) { Icon( - imageVector = + symbol = when (currentAudioRoute) { - AudioRoute.EARPIECE -> Icons.Outlined.Hearing - AudioRoute.SPEAKER -> Icons.AutoMirrored.Filled.VolumeUp - AudioRoute.BLUETOOTH -> Icons.Default.BluetoothAudio + AudioRoute.EARPIECE -> MaterialSymbols.Hearing + AudioRoute.SPEAKER -> MaterialSymbols.AutoMirrored.VolumeUp + AudioRoute.BLUETOOTH -> MaterialSymbols.BluetoothAudio }, contentDescription = stringRes( @@ -313,7 +303,7 @@ private fun CallControls( } IconButton(onClick = onAddParticipant, modifier = Modifier.size(56.dp)) { Icon( - imageVector = Icons.Default.PersonAdd, + symbol = MaterialSymbols.PersonAdd, contentDescription = stringRes(R.string.call_add_participant), tint = Color.White, modifier = Modifier.size(28.dp), @@ -328,7 +318,7 @@ private fun CallControls( modifier = Modifier.size(64.dp), ) { Icon( - Icons.Default.CallEnd, + MaterialSymbols.CallEnd, contentDescription = stringRes(R.string.call_hangup), tint = Color.White, modifier = Modifier.size(32.dp), diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/M3ActionDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/M3ActionDialog.kt index 38d58b2da..7f4c9a4b7 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/M3ActionDialog.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/M3ActionDialog.kt @@ -31,7 +31,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll -import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text @@ -39,11 +38,12 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.semantics.Role import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol import com.vitorpamplona.amethyst.ui.theme.Font14SP import com.vitorpamplona.amethyst.ui.theme.Size20Modifier @@ -95,7 +95,7 @@ fun M3ActionSection(content: @Composable ColumnScope.() -> Unit) { @Composable fun M3ActionRow( - icon: ImageVector, + icon: MaterialSymbol, text: String, isDestructive: Boolean = false, enabled: Boolean = true, @@ -125,7 +125,7 @@ fun M3ActionRow( .padding(horizontal = 16.dp, vertical = 10.dp), ) { Icon( - imageVector = icon, + symbol = icon, contentDescription = null, modifier = Size20Modifier, tint = tint, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/RobohashAsyncImage.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/RobohashAsyncImage.kt index 936429f36..677b2966d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/RobohashAsyncImage.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/RobohashAsyncImage.kt @@ -21,8 +21,6 @@ package com.vitorpamplona.amethyst.ui.components import androidx.compose.foundation.Image -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Face import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -34,6 +32,8 @@ import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.layout.ContentScale import coil3.compose.AsyncImage +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols +import com.vitorpamplona.amethyst.commons.icons.symbols.rememberMaterialSymbolPainter import com.vitorpamplona.amethyst.commons.robohash.CachedRobohash import com.vitorpamplona.amethyst.commons.ui.components.ProfilePictureUrl import com.vitorpamplona.amethyst.ui.theme.isLight @@ -54,7 +54,7 @@ fun RobohashAsyncImage( ) } else { Image( - imageVector = Icons.Default.Face, + painter = rememberMaterialSymbolPainter(MaterialSymbols.Face), contentDescription = contentDescription, colorFilter = MaterialTheme.colorScheme.onBackgroundColorFilter, modifier = modifier, @@ -84,10 +84,7 @@ fun RobohashFallbackAsyncImage( ) } else { forwardingPainter( - painter = - rememberVectorPainter( - image = Icons.Default.Face, - ), + painter = rememberMaterialSymbolPainter(MaterialSymbols.Face), colorFilter = MaterialTheme.colorScheme.onBackgroundColorFilter, ) } @@ -117,7 +114,7 @@ fun RobohashFallbackAsyncImage( ) } else { Image( - imageVector = Icons.Default.Face, + painter = rememberMaterialSymbolPainter(MaterialSymbols.Face), contentDescription = contentDescription, colorFilter = MaterialTheme.colorScheme.onBackgroundColorFilter, modifier = modifier, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/SensitivityWarning.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/SensitivityWarning.kt index fb3de24b4..6a03b0889 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/SensitivityWarning.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/SensitivityWarning.kt @@ -33,9 +33,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Visibility -import androidx.compose.material.icons.rounded.Warning import androidx.compose.material3.AssistChip import androidx.compose.material3.AssistChipDefaults import androidx.compose.material3.FilledTonalButton @@ -63,6 +60,8 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil3.imageLoader import coil3.request.ImageRequest import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.richtext.MediaUrlImage import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.ui.actions.CrossfadeIfEnabled @@ -268,7 +267,7 @@ private fun ContentWarningOverlayBody( .width(90.dp), ) { Icon( - imageVector = Icons.Default.Visibility, + symbol = MaterialSymbols.Visibility, contentDescription = stringRes(R.string.content_warning), modifier = Modifier @@ -277,7 +276,7 @@ private fun ContentWarningOverlayBody( tint = Color.White, ) Icon( - imageVector = Icons.Rounded.Warning, + symbol = MaterialSymbols.Warning, contentDescription = stringRes(R.string.content_warning), modifier = Modifier @@ -352,7 +351,7 @@ fun ContentWarningNote( .width(90.dp), ) { Icon( - imageVector = Icons.Default.Visibility, + symbol = MaterialSymbols.Visibility, contentDescription = stringRes(R.string.content_warning), modifier = Modifier @@ -361,7 +360,7 @@ fun ContentWarningNote( tint = MaterialTheme.colorScheme.onBackground, ) Icon( - imageVector = Icons.Rounded.Warning, + symbol = MaterialSymbols.Warning, contentDescription = stringRes(R.string.content_warning), modifier = Modifier diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/SwipeToDelete.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/SwipeToDelete.kt index 68c3d425d..32d342bff 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/SwipeToDelete.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/SwipeToDelete.kt @@ -30,9 +30,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Close -import androidx.compose.material.icons.filled.Delete import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -54,6 +51,8 @@ import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.platform.LocalHapticFeedback import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import kotlinx.coroutines.launch @@ -157,12 +156,12 @@ fun DismissBackground(dismissState: SwipeToDismissBoxState) { horizontalArrangement = Arrangement.SpaceBetween, ) { Icon( - Icons.Default.Delete, + MaterialSymbols.Delete, contentDescription = stringRes(id = R.string.request_deletion), ) Spacer(modifier = Modifier) Icon( - Icons.Default.Delete, + MaterialSymbols.Delete, contentDescription = stringRes(id = R.string.request_deletion), ) } @@ -212,7 +211,7 @@ fun ConfirmDeleteBackground( horizontalArrangement = Arrangement.Center, ) { Icon( - Icons.Default.Delete, + MaterialSymbols.Delete, contentDescription = stringRes(id = R.string.request_deletion), tint = Color.White, ) @@ -233,7 +232,7 @@ fun ConfirmDeleteBackground( horizontalArrangement = Arrangement.Center, ) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = stringRes(id = R.string.cancel), tint = Color.White, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/UrlPreviewCard.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/UrlPreviewCard.kt index 78027c4d0..e55429cf5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/UrlPreviewCard.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/UrlPreviewCard.kt @@ -24,8 +24,6 @@ import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.ContentCopy import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -39,6 +37,7 @@ import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.text.style.TextOverflow import coil3.compose.AsyncImage import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.preview.UrlInfoItem import com.vitorpamplona.amethyst.ui.components.util.setText import com.vitorpamplona.amethyst.ui.stringRes @@ -69,7 +68,7 @@ fun UrlPreviewCard( ) { M3ActionSection { M3ActionRow( - icon = Icons.Outlined.ContentCopy, + icon = MaterialSymbols.ContentCopy, text = stringRes(R.string.copy_url_to_clipboard), ) { scope.launch { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentDialog.kt index 19128180c..bc69f79c1 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentDialog.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentDialog.kt @@ -48,10 +48,6 @@ import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.pager.PagerState import androidx.compose.foundation.pager.rememberPagerState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.filled.Download -import androidx.compose.material.icons.filled.Share import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -84,6 +80,8 @@ import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.google.accompanist.permissions.isGranted import com.google.accompanist.permissions.rememberPermissionState import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.richtext.BaseMediaContent import com.vitorpamplona.amethyst.commons.richtext.MediaLocalImage import com.vitorpamplona.amethyst.commons.richtext.MediaLocalVideo @@ -351,7 +349,7 @@ private fun DialogContent( colors = ButtonDefaults.outlinedButtonColors().copy(containerColor = MaterialTheme.colorScheme.background), ) { Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, + symbol = MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = stringRes(R.string.back), ) } @@ -366,7 +364,7 @@ private fun DialogContent( colors = ButtonDefaults.outlinedButtonColors().copy(containerColor = MaterialTheme.colorScheme.background), ) { Icon( - imageVector = Icons.Default.Share, + symbol = MaterialSymbols.Share, modifier = Size20Modifier, contentDescription = stringRes(R.string.quick_action_share), ) @@ -421,7 +419,7 @@ private fun DialogContent( colors = ButtonDefaults.outlinedButtonColors().copy(containerColor = MaterialTheme.colorScheme.background), ) { Icon( - imageVector = Icons.Default.Download, + symbol = MaterialSymbols.Download, modifier = Size20Modifier, contentDescription = stringRes(R.string.download_to_phone), ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt index 61d9add09..9839bb52a 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt @@ -36,12 +36,6 @@ import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Report -import androidx.compose.material.icons.outlined.Collections -import androidx.compose.material.icons.outlined.ContentCopy -import androidx.compose.material.icons.outlined.Link -import androidx.compose.material.icons.outlined.Share import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -82,6 +76,8 @@ import coil3.size.Size import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.vitorpamplona.amethyst.Amethyst import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.richtext.BaseMediaContent import com.vitorpamplona.amethyst.commons.richtext.MediaLocalImage import com.vitorpamplona.amethyst.commons.richtext.MediaLocalVideo @@ -872,7 +868,7 @@ fun ShareMediaAction( if ((videoUri != null && !videoUri.startsWith("file")) || postNostrUri != null) { M3ActionSection { if (videoUri != null && !videoUri.startsWith("file")) { - M3ActionRow(icon = Icons.Outlined.Link, text = stringRes(R.string.copy_url_to_clipboard)) { + M3ActionRow(icon = MaterialSymbols.Link, text = stringRes(R.string.copy_url_to_clipboard)) { scope.launch { clipboardManager.setText(videoUri) } @@ -880,13 +876,13 @@ fun ShareMediaAction( } } postNostrUri?.let { - M3ActionRow(icon = Icons.Outlined.ContentCopy, text = stringRes(R.string.copy_the_note_id_to_the_clipboard)) { + M3ActionRow(icon = MaterialSymbols.ContentCopy, text = stringRes(R.string.copy_the_note_id_to_the_clipboard)) { scope.launch { clipboardManager.setText(it) } onDismiss() } - M3ActionRow(icon = Icons.Outlined.Collections, text = stringRes(R.string.add_media_to_gallery)) { + M3ActionRow(icon = MaterialSymbols.Collections, text = stringRes(R.string.add_media_to_gallery)) { if (videoUri != null) { val n19 = Nip19Parser.uriToRoute(postNostrUri)?.entity as? NEvent if (n19 != null) { @@ -909,7 +905,7 @@ fun ShareMediaAction( is MediaUrlImage -> { videoUri?.let { if (videoUri.isNotEmpty()) { - M3ActionRow(icon = Icons.Outlined.Share, text = stringRes(R.string.share_image)) { + M3ActionRow(icon = MaterialSymbols.Share, text = stringRes(R.string.share_image)) { accountViewModel.viewModelScope.launch { shareImageFile(context, videoUri, mimeType) } onDismiss() } @@ -921,7 +917,7 @@ fun ShareMediaAction( videoUri?.let { if (videoUri.isNotEmpty()) { M3ActionRow( - icon = Icons.Outlined.Share, + icon = MaterialSymbols.Share, text = stringRes(R.string.share_video), enabled = !isDownloadingVideo.value, ) { @@ -951,7 +947,7 @@ fun ShareMediaAction( is MediaLocalVideo -> { content.localFile?.let { localFile -> - M3ActionRow(icon = Icons.Outlined.Share, text = stringRes(R.string.share_video)) { + M3ActionRow(icon = MaterialSymbols.Share, text = stringRes(R.string.share_video)) { accountViewModel.viewModelScope.launch { shareLocalVideoFile(context, localFile, mimeType) } onDismiss() } @@ -1173,7 +1169,7 @@ private fun HashVerificationSymbol(verifiedHash: Boolean) { }, ) { Icon( - imageVector = Icons.Default.Report, + symbol = MaterialSymbols.Report, contentDescription = stringRes(id = R.string.hash_verification_failed), modifier = Size30Modifier, tint = Color.Red, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/pdf/PdfPreviewCard.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/pdf/PdfPreviewCard.kt index 0712e95d1..909c19aae 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/pdf/PdfPreviewCard.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/pdf/PdfPreviewCard.kt @@ -33,8 +33,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.PictureAsPdf import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -52,6 +50,8 @@ import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.richtext.MediaUrlPdf import com.vitorpamplona.amethyst.ui.components.ClickableUrl import com.vitorpamplona.amethyst.ui.components.ShareMediaAction @@ -222,7 +222,7 @@ private fun FilenameRow( horizontalArrangement = Arrangement.spacedBy(8.dp), ) { Icon( - imageVector = Icons.Outlined.PictureAsPdf, + symbol = MaterialSymbols.PictureAsPdf, contentDescription = null, modifier = Size20Modifier, tint = MaterialTheme.colorScheme.onSurfaceVariant, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/pdf/PdfViewerDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/pdf/PdfViewerDialog.kt index 57279441c..34575449f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/pdf/PdfViewerDialog.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/pdf/PdfViewerDialog.kt @@ -37,9 +37,6 @@ import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.rememberPagerState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.filled.Share import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon @@ -66,6 +63,8 @@ import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties import coil3.disk.DiskCache import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.richtext.MediaUrlPdf import com.vitorpamplona.amethyst.ui.components.ShareMediaAction import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @@ -273,7 +272,7 @@ private fun PdfViewerContent( colors = ButtonDefaults.outlinedButtonColors().copy(containerColor = MaterialTheme.colorScheme.background), ) { Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, + symbol = MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = stringRes(R.string.back), ) } @@ -297,7 +296,7 @@ private fun PdfViewerContent( colors = ButtonDefaults.outlinedButtonColors().copy(containerColor = MaterialTheme.colorScheme.background), ) { Icon( - imageVector = Icons.Default.Share, + symbol = MaterialSymbols.Share, modifier = Size20Modifier, contentDescription = stringRes(R.string.quick_action_share), ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/toasts/multiline/MultiUserErrorMessageDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/toasts/multiline/MultiUserErrorMessageDialog.kt index a92afa465..5202c58ea 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/toasts/multiline/MultiUserErrorMessageDialog.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/toasts/multiline/MultiUserErrorMessageDialog.kt @@ -22,8 +22,6 @@ package com.vitorpamplona.amethyst.ui.components.toasts.multiline import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Done import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.Icon @@ -31,6 +29,8 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.ui.navigation.navs.EmptyNav @@ -95,7 +95,7 @@ fun MultiUserErrorMessageDialog( contentPadding = PaddingValues(horizontal = Size16dp), ) { Icon( - imageVector = Icons.Outlined.Done, + symbol = MaterialSymbols.Done, contentDescription = null, ) Spacer(StdHorzSpacer) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/bottombars/AppBottomBar.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/bottombars/AppBottomBar.kt index dfc9c90c8..e9f4985c4 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/bottombars/AppBottomBar.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/bottombars/AppBottomBar.kt @@ -44,6 +44,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon import com.vitorpamplona.amethyst.ui.navigation.routes.Route import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.stringRes @@ -144,7 +145,7 @@ private fun NotifiableIcon( val iconSizeModifier = Modifier.size(Size20dp) val description = stringRes(def.labelRes) Icon( - imageVector = def.icon, + symbol = def.icon, contentDescription = description, modifier = iconSizeModifier, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/bottombars/NavBarItem.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/bottombars/NavBarItem.kt index 6fbd68463..edaa94f58 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/bottombars/NavBarItem.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/bottombars/NavBarItem.kt @@ -20,33 +20,9 @@ */ package com.vitorpamplona.amethyst.ui.navigation.bottombars -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.FormatListBulleted -import androidx.compose.material.icons.automirrored.outlined.Article -import androidx.compose.material.icons.automirrored.outlined.Chat -import androidx.compose.material.icons.filled.AccountCircle -import androidx.compose.material.icons.outlined.AccountBalanceWallet -import androidx.compose.material.icons.outlined.CollectionsBookmark -import androidx.compose.material.icons.outlined.Drafts -import androidx.compose.material.icons.outlined.EmojiEmotions -import androidx.compose.material.icons.outlined.Groups -import androidx.compose.material.icons.outlined.Home -import androidx.compose.material.icons.outlined.Language -import androidx.compose.material.icons.outlined.Mail -import androidx.compose.material.icons.outlined.Mic -import androidx.compose.material.icons.outlined.MilitaryTech -import androidx.compose.material.icons.outlined.Notifications -import androidx.compose.material.icons.outlined.Photo -import androidx.compose.material.icons.outlined.PlayCircle -import androidx.compose.material.icons.outlined.Poll -import androidx.compose.material.icons.outlined.Sensors -import androidx.compose.material.icons.outlined.Settings -import androidx.compose.material.icons.outlined.SmartDisplay -import androidx.compose.material.icons.outlined.Storefront -import androidx.compose.material.icons.outlined.Subscriptions -import androidx.compose.material.icons.outlined.Tag -import androidx.compose.ui.graphics.vector.ImageVector import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.isDebug import com.vitorpamplona.amethyst.ui.navigation.routes.Route import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @@ -90,7 +66,7 @@ enum class NavBarItem { data class NavBarItemDef( val id: NavBarItem, val labelRes: Int, - val icon: ImageVector, + val icon: MaterialSymbol, val resolveRoute: (AccountViewModel) -> Route, ) @@ -100,189 +76,189 @@ val NavBarCatalog: Map = NavBarItemDef( id = NavBarItem.HOME, labelRes = R.string.route_home, - icon = Icons.Outlined.Home, + icon = MaterialSymbols.Home, resolveRoute = { Route.Home }, ), NavBarItem.MESSAGES to NavBarItemDef( id = NavBarItem.MESSAGES, labelRes = R.string.route_messages, - icon = Icons.Outlined.Mail, + icon = MaterialSymbols.Mail, resolveRoute = { Route.Message }, ), NavBarItem.VIDEO to NavBarItemDef( id = NavBarItem.VIDEO, labelRes = R.string.route_video, - icon = Icons.Outlined.Subscriptions, + icon = MaterialSymbols.Subscriptions, resolveRoute = { Route.Video }, ), NavBarItem.DISCOVER to NavBarItemDef( id = NavBarItem.DISCOVER, labelRes = R.string.route_discover, - icon = Icons.Outlined.Sensors, + icon = MaterialSymbols.Sensors, resolveRoute = { Route.Discover }, ), NavBarItem.NOTIFICATIONS to NavBarItemDef( id = NavBarItem.NOTIFICATIONS, labelRes = R.string.route_notifications, - icon = Icons.Outlined.Notifications, + icon = MaterialSymbols.Notifications, resolveRoute = { Route.Notification() }, ), NavBarItem.PROFILE to NavBarItemDef( id = NavBarItem.PROFILE, labelRes = R.string.profile, - icon = Icons.Default.AccountCircle, + icon = MaterialSymbols.AccountCircle, resolveRoute = { Route.Profile(it.userProfile().pubkeyHex) }, ), NavBarItem.MY_LISTS to NavBarItemDef( id = NavBarItem.MY_LISTS, labelRes = R.string.my_lists, - icon = Icons.AutoMirrored.Filled.FormatListBulleted, + icon = MaterialSymbols.AutoMirrored.FormatListBulleted, resolveRoute = { Route.Lists }, ), NavBarItem.BOOKMARKS to NavBarItemDef( id = NavBarItem.BOOKMARKS, labelRes = R.string.bookmarks, - icon = Icons.Outlined.CollectionsBookmark, + icon = MaterialSymbols.CollectionsBookmark, resolveRoute = { Route.BookmarkGroups }, ), NavBarItem.WEB_BOOKMARKS to NavBarItemDef( id = NavBarItem.WEB_BOOKMARKS, labelRes = R.string.web_bookmarks, - icon = Icons.Outlined.Language, + icon = MaterialSymbols.Language, resolveRoute = { Route.WebBookmarks }, ), NavBarItem.DRAFTS to NavBarItemDef( id = NavBarItem.DRAFTS, labelRes = R.string.drafts, - icon = Icons.Outlined.Drafts, + icon = MaterialSymbols.Drafts, resolveRoute = { Route.Drafts }, ), NavBarItem.INTEREST_SETS to NavBarItemDef( id = NavBarItem.INTEREST_SETS, labelRes = R.string.interest_sets_title, - icon = Icons.Outlined.Tag, + icon = MaterialSymbols.Tag, resolveRoute = { Route.InterestSets }, ), NavBarItem.EMOJI_PACKS to NavBarItemDef( id = NavBarItem.EMOJI_PACKS, labelRes = R.string.manage_emoji_packs, - icon = Icons.Outlined.EmojiEmotions, + icon = MaterialSymbols.EmojiEmotions, resolveRoute = { Route.EmojiPacks }, ), NavBarItem.WALLET to NavBarItemDef( id = NavBarItem.WALLET, labelRes = R.string.wallet, - icon = Icons.Outlined.AccountBalanceWallet, + icon = MaterialSymbols.AccountBalanceWallet, resolveRoute = { Route.Wallet }, ), NavBarItem.COMMUNITIES to NavBarItemDef( id = NavBarItem.COMMUNITIES, labelRes = R.string.communities, - icon = Icons.Outlined.Groups, + icon = MaterialSymbols.Groups, resolveRoute = { Route.Communities }, ), NavBarItem.ARTICLES to NavBarItemDef( id = NavBarItem.ARTICLES, labelRes = R.string.discover_reads, - icon = Icons.AutoMirrored.Outlined.Article, + icon = MaterialSymbols.AutoMirrored.Article, resolveRoute = { Route.Articles }, ), NavBarItem.PICTURES to NavBarItemDef( id = NavBarItem.PICTURES, labelRes = R.string.pictures, - icon = Icons.Outlined.Photo, + icon = MaterialSymbols.Photo, resolveRoute = { Route.Pictures }, ), NavBarItem.SHORTS to NavBarItemDef( id = NavBarItem.SHORTS, labelRes = R.string.shorts, - icon = Icons.Outlined.PlayCircle, + icon = MaterialSymbols.PlayCircle, resolveRoute = { Route.Shorts }, ), NavBarItem.PUBLIC_CHATS to NavBarItemDef( id = NavBarItem.PUBLIC_CHATS, labelRes = R.string.public_chats, - icon = Icons.AutoMirrored.Outlined.Chat, + icon = MaterialSymbols.AutoMirrored.Chat, resolveRoute = { Route.PublicChats }, ), NavBarItem.FOLLOW_PACKS to NavBarItemDef( id = NavBarItem.FOLLOW_PACKS, labelRes = R.string.follow_packs, - icon = Icons.Outlined.CollectionsBookmark, + icon = MaterialSymbols.CollectionsBookmark, resolveRoute = { Route.FollowPacks }, ), NavBarItem.LIVE_STREAMS to NavBarItemDef( id = NavBarItem.LIVE_STREAMS, labelRes = R.string.live_streams, - icon = Icons.Outlined.Sensors, + icon = MaterialSymbols.Sensors, resolveRoute = { Route.LiveStreams }, ), NavBarItem.AUDIO_ROOMS to NavBarItemDef( id = NavBarItem.AUDIO_ROOMS, labelRes = R.string.audio_rooms, - icon = Icons.Outlined.Mic, + icon = MaterialSymbols.Mic, resolveRoute = { Route.AudioRooms }, ), NavBarItem.LONGS to NavBarItemDef( id = NavBarItem.LONGS, labelRes = R.string.longs, - icon = Icons.Outlined.SmartDisplay, + icon = MaterialSymbols.SmartDisplay, resolveRoute = { Route.Longs }, ), NavBarItem.POLLS to NavBarItemDef( id = NavBarItem.POLLS, labelRes = R.string.polls, - icon = Icons.Outlined.Poll, + icon = MaterialSymbols.Poll, resolveRoute = { Route.Polls }, ), NavBarItem.BADGES to NavBarItemDef( id = NavBarItem.BADGES, labelRes = R.string.badges, - icon = Icons.Outlined.MilitaryTech, + icon = MaterialSymbols.MilitaryTech, resolveRoute = { Route.Badges }, ), NavBarItem.PRODUCTS to NavBarItemDef( id = NavBarItem.PRODUCTS, labelRes = R.string.discover_marketplace, - icon = Icons.Outlined.Storefront, + icon = MaterialSymbols.Storefront, resolveRoute = { Route.Products }, ), NavBarItem.EMOJI_SETS to NavBarItemDef( id = NavBarItem.EMOJI_SETS, labelRes = R.string.emoji_sets, - icon = Icons.Outlined.EmojiEmotions, + icon = MaterialSymbols.EmojiEmotions, resolveRoute = { Route.BrowseEmojiSets }, ), NavBarItem.SETTINGS to NavBarItemDef( id = NavBarItem.SETTINGS, labelRes = R.string.settings, - icon = Icons.Outlined.Settings, + icon = MaterialSymbols.Settings, resolveRoute = { Route.AllSettings }, ), ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/drawer/AccountSwitchBottomSheet.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/drawer/AccountSwitchBottomSheet.kt index c5d769bbf..fbd7bd992 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/drawer/AccountSwitchBottomSheet.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/drawer/AccountSwitchBottomSheet.kt @@ -31,9 +31,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.Logout -import androidx.compose.material.icons.filled.RadioButtonChecked import androidx.compose.material3.AlertDialog import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -57,6 +54,8 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.AccountInfo import com.vitorpamplona.amethyst.LocalPreferences import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.relayClient.reqCommand.user.observeUserInfo @@ -205,7 +204,7 @@ private fun ActiveMarker( if (isCurrentUser) { Icon( - imageVector = Icons.Default.RadioButtonChecked, + symbol = MaterialSymbols.RadioButtonChecked, contentDescription = stringRes(R.string.account_switch_active_account), tint = MaterialTheme.colorScheme.secondary, ) @@ -288,7 +287,7 @@ private fun LogoutButton( onClick = { logoutDialog = true }, ) { Icon( - imageVector = Icons.AutoMirrored.Filled.Logout, + symbol = MaterialSymbols.AutoMirrored.Logout, contentDescription = stringRes(R.string.log_out), tint = MaterialTheme.colorScheme.onSurface, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/drawer/DrawerContent.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/drawer/DrawerContent.kt index 74c6fbd98..735c6c705 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/drawer/DrawerContent.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/drawer/DrawerContent.kt @@ -49,18 +49,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.Send -import androidx.compose.material.icons.filled.AccountCircle -import androidx.compose.material.icons.filled.Delete -import androidx.compose.material.icons.outlined.CollectionsBookmark -import androidx.compose.material.icons.outlined.Drafts -import androidx.compose.material.icons.outlined.ExpandLess -import androidx.compose.material.icons.outlined.ExpandMore -import androidx.compose.material.icons.outlined.GroupAdd -import androidx.compose.material.icons.outlined.Photo -import androidx.compose.material.icons.outlined.SettingsInputAntenna -import androidx.compose.material.icons.outlined.SmartDisplay import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -81,7 +69,6 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.res.stringResource @@ -99,6 +86,9 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil3.compose.AsyncImage import com.vitorpamplona.amethyst.BuildConfig import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.ImmutableListOfLists import com.vitorpamplona.amethyst.isDebug import com.vitorpamplona.amethyst.model.Account @@ -467,7 +457,7 @@ fun SendButton( onClick = onClick, ) { Icon( - imageVector = Icons.AutoMirrored.Filled.Send, + symbol = MaterialSymbols.AutoMirrored.Send, null, modifier = Size20Modifier, tint = tint, @@ -482,7 +472,7 @@ fun UserStatusDeleteButton(onClick: () -> Unit) { onClick = onClick, ) { Icon( - imageVector = Icons.Default.Delete, + symbol = MaterialSymbols.Delete, null, modifier = Size20Modifier, tint = MaterialTheme.colorScheme.placeholderText, @@ -549,7 +539,7 @@ fun ListContent( CollapsibleSection(title = R.string.drawer_section_create) { NavigationRow( title = R.string.share_hls_video, - icon = Icons.Outlined.SettingsInputAntenna, + icon = MaterialSymbols.SettingsInputAntenna, tint = MaterialTheme.colorScheme.onBackground, nav = nav, route = Route.NewHlsVideo, @@ -585,7 +575,7 @@ fun ListContent( IconRow( title = R.string.drawer_accounts, - icon = Icons.Outlined.GroupAdd, + icon = MaterialSymbols.GroupAdd, tint = MaterialTheme.colorScheme.onBackground, onClick = openSheet, ) @@ -653,7 +643,7 @@ fun CollapsibleSection( color = MaterialTheme.colorScheme.onSurfaceVariant, ) Icon( - imageVector = if (expanded) Icons.Outlined.ExpandLess else Icons.Outlined.ExpandMore, + symbol = if (expanded) MaterialSymbols.ExpandLess else MaterialSymbols.ExpandMore, contentDescription = sectionTitle, modifier = Size22Modifier, tint = MaterialTheme.colorScheme.onSurfaceVariant, @@ -711,7 +701,7 @@ fun NavigationRow( @Composable fun NavigationRow( title: Int, - icon: ImageVector, + icon: MaterialSymbol, tint: Color, nav: INav, route: Route, @@ -730,7 +720,7 @@ fun NavigationRow( @Composable fun NavigationRow( title: Int, - icon: ImageVector, + icon: MaterialSymbol, tint: Color, nav: INav, computeRoute: () -> Route, @@ -783,7 +773,7 @@ fun IconRow( @Composable fun IconRow( title: Int, - icon: ImageVector, + icon: MaterialSymbol, tint: Color, onClick: () -> Unit, ) { @@ -800,7 +790,7 @@ fun IconRow( verticalAlignment = Alignment.CenterVertically, ) { Icon( - imageVector = icon, + symbol = icon, contentDescription = title, modifier = Size22ModifierWith4Padding, tint = tint, @@ -943,19 +933,19 @@ private fun CollapsibleSectionPreview() { CollapsibleSection(title = R.string.drawer_section_you) { IconRow( title = R.string.profile, - icon = Icons.Default.AccountCircle, + icon = MaterialSymbols.AccountCircle, tint = MaterialTheme.colorScheme.primary, onClick = {}, ) IconRow( title = R.string.bookmarks, - icon = Icons.Outlined.CollectionsBookmark, + icon = MaterialSymbols.CollectionsBookmark, tint = MaterialTheme.colorScheme.onBackground, onClick = {}, ) IconRow( title = R.string.drafts, - icon = Icons.Outlined.Drafts, + icon = MaterialSymbols.Drafts, tint = MaterialTheme.colorScheme.onBackground, onClick = {}, ) @@ -963,13 +953,13 @@ private fun CollapsibleSectionPreview() { CollapsibleSection(title = R.string.drawer_section_feeds) { IconRow( title = R.string.pictures, - icon = Icons.Outlined.Photo, + icon = MaterialSymbols.Photo, tint = MaterialTheme.colorScheme.onBackground, onClick = {}, ) IconRow( title = R.string.longs, - icon = Icons.Outlined.SmartDisplay, + icon = MaterialSymbols.SmartDisplay, tint = MaterialTheme.colorScheme.onBackground, onClick = {}, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/topbars/FeedFilterSpinner.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/topbars/FeedFilterSpinner.kt index f589fd98c..251d87cf5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/topbars/FeedFilterSpinner.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/topbars/FeedFilterSpinner.kt @@ -36,16 +36,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.outlined.ViewList -import androidx.compose.material.icons.automirrored.outlined.VolumeOff -import androidx.compose.material.icons.filled.ExpandMore -import androidx.compose.material.icons.outlined.AutoAwesome -import androidx.compose.material.icons.outlined.Groups -import androidx.compose.material.icons.outlined.LocationOn -import androidx.compose.material.icons.outlined.Person -import androidx.compose.material.icons.outlined.Public -import androidx.compose.material.icons.outlined.Storage import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface @@ -78,6 +68,8 @@ import com.google.accompanist.permissions.isGranted import com.google.accompanist.permissions.rememberPermissionState import com.vitorpamplona.amethyst.Amethyst import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.AddressableNote import com.vitorpamplona.amethyst.model.TopFilter import com.vitorpamplona.amethyst.service.call.CallSessionBridge.accountViewModel @@ -261,7 +253,7 @@ fun FeedFilterSpinner( } Icon( - imageVector = Icons.Default.ExpandMore, + symbol = MaterialSymbols.ExpandMore, contentDescription = explainer, modifier = Size20Modifier, tint = MaterialTheme.colorScheme.placeholderText, @@ -579,54 +571,54 @@ private fun FeedIcon( val icon = when (item.code) { is TopFilter.Global -> { - Icons.Outlined.Public + MaterialSymbols.Public } is TopFilter.AroundMe -> { - Icons.Outlined.LocationOn + MaterialSymbols.LocationOn } is TopFilter.AllFollows -> { - Icons.Outlined.Groups + MaterialSymbols.Groups } is TopFilter.AllUserFollows -> { - Icons.Outlined.Person + MaterialSymbols.Person } is TopFilter.DefaultFollows -> { - Icons.Outlined.Groups + MaterialSymbols.Groups } is TopFilter.MuteList -> { - Icons.AutoMirrored.Outlined.VolumeOff + MaterialSymbols.AutoMirrored.VolumeOff } is TopFilter.PeopleList -> { - Icons.AutoMirrored.Outlined.ViewList + MaterialSymbols.AutoMirrored.ViewList } is TopFilter.FavoriteAlgoFeed -> { - Icons.Outlined.AutoAwesome + MaterialSymbols.AutoAwesome } is TopFilter.AllFavoriteAlgoFeeds -> { - Icons.Outlined.AutoAwesome + MaterialSymbols.AutoAwesome } else -> { when (item.name) { - is GeoHashName -> Icons.Outlined.LocationOn - is RelayName -> Icons.Outlined.Storage - is CommunityName -> Icons.Outlined.Groups - is PeopleListName -> Icons.AutoMirrored.Outlined.ViewList - is FavoriteAlgoFeedName -> Icons.Outlined.AutoAwesome - else -> Icons.Outlined.Person + is GeoHashName -> MaterialSymbols.LocationOn + is RelayName -> MaterialSymbols.Storage + is CommunityName -> MaterialSymbols.Groups + is PeopleListName -> MaterialSymbols.AutoMirrored.ViewList + is FavoriteAlgoFeedName -> MaterialSymbols.AutoAwesome + else -> MaterialSymbols.Person } } } Icon( - imageVector = icon, + symbol = icon, contentDescription = null, modifier = modifier, tint = MaterialTheme.colorScheme.onSurfaceVariant, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/BadgeCompose.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/BadgeCompose.kt index 01a3c83e6..11cc59616 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/BadgeCompose.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/BadgeCompose.kt @@ -29,8 +29,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.MilitaryTech import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -42,6 +40,8 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.observeNote import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.routeFor @@ -102,7 +102,7 @@ fun BadgeCompose( modifier = Modifier.width(55.dp).padding(0.dp), ) { Icon( - imageVector = Icons.Default.MilitaryTech, + symbol = MaterialSymbols.MilitaryTech, null, modifier = Modifier.size(25.dp).align(Alignment.TopEnd), tint = MaterialTheme.colorScheme.primary, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ErrorMessageDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ErrorMessageDialog.kt index ede46fb9e..659507bdf 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ErrorMessageDialog.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ErrorMessageDialog.kt @@ -27,8 +27,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.text.selection.SelectionContainer -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Done import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.ButtonColors @@ -42,6 +40,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.painterRes import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.Size16dp @@ -97,7 +97,7 @@ fun ErrorMessageDialog( verticalAlignment = Alignment.CenterVertically, ) { Icon( - imageVector = Icons.Outlined.Done, + symbol = MaterialSymbols.Done, contentDescription = null, ) Spacer(StdHorzSpacer) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/Icons.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/Icons.kt index 09c8a4a1e..d56ee0b80 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/Icons.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/Icons.kt @@ -22,25 +22,6 @@ package com.vitorpamplona.amethyst.ui.note import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.automirrored.filled.OpenInNew -import androidx.compose.material.icons.automirrored.outlined.OpenInNew -import androidx.compose.material.icons.filled.Bolt -import androidx.compose.material.icons.filled.Cancel -import androidx.compose.material.icons.filled.Clear -import androidx.compose.material.icons.filled.ContentCopy -import androidx.compose.material.icons.filled.DownloadForOffline -import androidx.compose.material.icons.filled.ExpandLess -import androidx.compose.material.icons.filled.ExpandMore -import androidx.compose.material.icons.filled.Link -import androidx.compose.material.icons.filled.MoreVert -import androidx.compose.material.icons.filled.PushPin -import androidx.compose.material.icons.filled.Share -import androidx.compose.material.icons.outlined.AddReaction -import androidx.compose.material.icons.outlined.Close -import androidx.compose.material.icons.outlined.Mic -import androidx.compose.material.icons.outlined.PlayCircle import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable @@ -62,6 +43,8 @@ import com.vitorpamplona.amethyst.commons.icons.Repost import com.vitorpamplona.amethyst.commons.icons.Reposted import com.vitorpamplona.amethyst.commons.icons.Search import com.vitorpamplona.amethyst.commons.icons.Zap +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange import com.vitorpamplona.amethyst.ui.theme.Size19Modifier @@ -94,7 +77,7 @@ fun FollowingIcon(modifier: Modifier) { @Composable fun ArrowBackIcon(tint: Color = MaterialTheme.colorScheme.grayText) { Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, + symbol = MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = stringRes(R.string.back), tint = tint, ) @@ -106,7 +89,7 @@ fun DownloadForOfflineIcon( tint: Color = MaterialTheme.colorScheme.primary, ) { Icon( - imageVector = Icons.Default.DownloadForOffline, + symbol = MaterialSymbols.DownloadForOffline, contentDescription = stringRes(id = R.string.accessibility_download_for_offline), modifier = remember(iconSize) { Modifier.size(iconSize) }, tint = tint, @@ -132,7 +115,7 @@ fun ChangeReactionIcon( tint: Color = Color.Unspecified, ) { Icon( - imageVector = Icons.Outlined.AddReaction, + symbol = MaterialSymbols.AddReaction, contentDescription = stringRes(id = R.string.change_reaction), modifier = modifier, tint = tint, @@ -184,7 +167,7 @@ fun LightningAddressIcon( tint: Color = Color.Unspecified, ) { Icon( - imageVector = Icons.Default.Bolt, + symbol = MaterialSymbols.Bolt, contentDescription = stringRes(R.string.lightning_address), tint = tint, modifier = modifier, @@ -222,7 +205,7 @@ fun ZapIcon( contentDescriptor: Int = R.string.zap_description, ) { Icon( - imageVector = Icons.Default.Bolt, + symbol = MaterialSymbols.Bolt, contentDescription = stringRes(contentDescriptor), tint = tint, modifier = modifier, @@ -249,7 +232,7 @@ fun ShareIcon( tint: Color = Color.Unspecified, ) { Icon( - imageVector = Icons.Default.Share, + symbol = MaterialSymbols.Share, modifier = modifier, contentDescription = stringRes(R.string.share_or_save), tint = tint, @@ -269,7 +252,7 @@ fun CashuIcon(modifier: Modifier) { @Composable fun CopyIcon(modifier: Modifier) { Icon( - imageVector = Icons.Default.ContentCopy, + symbol = MaterialSymbols.ContentCopy, stringRes(id = R.string.copy_to_clipboard), modifier = modifier, ) @@ -278,7 +261,7 @@ fun CopyIcon(modifier: Modifier) { @Composable fun OpenInNewIcon(modifier: Modifier) { Icon( - imageVector = Icons.AutoMirrored.Filled.OpenInNew, + symbol = MaterialSymbols.AutoMirrored.OpenInNew, stringRes(id = R.string.copy_to_clipboard), modifier = modifier, ) @@ -290,7 +273,7 @@ fun ExpandLessIcon( contentDescriptor: Int, ) { Icon( - imageVector = Icons.Default.ExpandLess, + symbol = MaterialSymbols.ExpandLess, contentDescription = stringRes(id = contentDescriptor), modifier = modifier, tint = MaterialTheme.colorScheme.subtleButton, @@ -303,7 +286,7 @@ fun ExpandMoreIcon( contentDescriptor: Int, ) { Icon( - imageVector = Icons.Default.ExpandMore, + symbol = MaterialSymbols.ExpandMore, contentDescription = stringRes(id = contentDescriptor), modifier = modifier, tint = MaterialTheme.colorScheme.subtleButton, @@ -316,7 +299,7 @@ fun VoiceReplyIcon( tint: Color, ) { Icon( - imageVector = Icons.Outlined.Mic, + symbol = MaterialSymbols.Mic, contentDescription = stringRes(id = R.string.record_a_message), tint = tint, modifier = iconSizeModifier, @@ -339,7 +322,7 @@ fun CommentIcon( @Composable fun CancelIcon() { Icon( - imageVector = Icons.Default.Cancel, + symbol = MaterialSymbols.Cancel, contentDescription = stringRes(id = R.string.cancel), modifier = Size30Modifier, tint = MaterialTheme.colorScheme.placeholderText, @@ -349,7 +332,7 @@ fun CancelIcon() { @Composable fun CloseIcon() { Icon( - imageVector = Icons.Outlined.Close, + symbol = MaterialSymbols.Close, contentDescription = stringRes(id = R.string.cancel), modifier = Size20Modifier, ) @@ -374,7 +357,7 @@ fun PlayIcon( tint: Color, ) { Icon( - imageVector = Icons.Outlined.PlayCircle, + symbol = MaterialSymbols.PlayCircle, contentDescription = stringRes(id = R.string.accessibility_play_username), modifier = modifier, tint = tint, @@ -387,7 +370,7 @@ fun PinIcon( tint: Color, ) { Icon( - imageVector = Icons.Default.PushPin, + symbol = MaterialSymbols.PushPin, contentDescription = stringRes(id = R.string.accessibility_pushpin), modifier = modifier, tint = tint, @@ -400,7 +383,7 @@ fun EnablePiP( tint: Color, ) { Icon( - imageVector = Icons.AutoMirrored.Outlined.OpenInNew, + symbol = MaterialSymbols.AutoMirrored.OpenInNew, contentDescription = stringRes(id = R.string.enter_picture_in_picture), modifier = modifier, tint = tint, @@ -410,7 +393,7 @@ fun EnablePiP( @Composable fun ClearTextIcon() { Icon( - imageVector = Icons.Default.Clear, + symbol = MaterialSymbols.Clear, contentDescription = stringRes(R.string.clear), ) } @@ -421,7 +404,7 @@ fun LinkIcon( tint: Color, ) { Icon( - imageVector = Icons.Default.Link, + symbol = MaterialSymbols.Link, contentDescription = stringRes(R.string.website), modifier = modifier, tint = tint, @@ -431,7 +414,7 @@ fun LinkIcon( @Composable fun VerticalDotsIcon() { Icon( - imageVector = Icons.Default.MoreVert, + symbol = MaterialSymbols.MoreVert, contentDescription = stringRes(id = R.string.note_options), modifier = Size19Modifier, tint = MaterialTheme.colorScheme.placeholderText, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NIP05VerificationDisplay.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NIP05VerificationDisplay.kt index 325005dd8..817fd27d0 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NIP05VerificationDisplay.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NIP05VerificationDisplay.kt @@ -23,10 +23,6 @@ package com.vitorpamplona.amethyst.ui.note import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.OpenInNew -import androidx.compose.material.icons.filled.Downloading -import androidx.compose.material.icons.filled.Report import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.LocalTextStyle @@ -49,6 +45,8 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.commons.hashtags.CustomHashTagIcons import com.vitorpamplona.amethyst.commons.hashtags.Tunestr +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.nip05DnsIdentifiers.Nip05State import com.vitorpamplona.amethyst.commons.model.nip05DnsIdentifiers.Nip05VerifState import com.vitorpamplona.amethyst.model.AddressableNote @@ -303,7 +301,7 @@ fun DisplayStatusInner( onClick = { runCatching { uri.openUri(url.trim()) } }, ) { Icon( - imageVector = Icons.AutoMirrored.Filled.OpenInNew, + symbol = MaterialSymbols.AutoMirrored.OpenInNew, null, modifier = Size15Modifier, tint = MaterialTheme.colorScheme.lessImportantLink, @@ -323,7 +321,7 @@ fun DisplayStatusInner( }, ) { Icon( - imageVector = Icons.AutoMirrored.Filled.OpenInNew, + symbol = MaterialSymbols.AutoMirrored.OpenInNew, null, modifier = Size15Modifier, tint = MaterialTheme.colorScheme.lessImportantLink, @@ -345,7 +343,7 @@ fun DisplayStatusInner( }, ) { Icon( - imageVector = Icons.AutoMirrored.Filled.OpenInNew, + symbol = MaterialSymbols.AutoMirrored.OpenInNew, null, modifier = Size15Modifier, tint = MaterialTheme.colorScheme.lessImportantLink, @@ -362,7 +360,7 @@ fun DisplayStatusInner( onClick = { nav.nav(routeForUser(nostrPTag)) }, ) { Icon( - imageVector = Icons.AutoMirrored.Filled.OpenInNew, + symbol = MaterialSymbols.AutoMirrored.OpenInNew, null, modifier = Size15Modifier, tint = MaterialTheme.colorScheme.lessImportantLink, @@ -461,7 +459,7 @@ fun RenderNIP05VerifiedSymbol( when (it) { is Nip05VerifState.Verifying -> { Icon( - imageVector = Icons.Default.Downloading, + symbol = MaterialSymbols.Downloading, contentDescription = stringRes(id = R.string.nip05_checking), modifier = modifier, tint = Color.Yellow, @@ -470,7 +468,7 @@ fun RenderNIP05VerifiedSymbol( is Nip05VerifState.NotStarted -> { Icon( - imageVector = Icons.Default.Downloading, + symbol = MaterialSymbols.Downloading, contentDescription = stringRes(id = R.string.nip05_checking), modifier = modifier, tint = Color.Yellow, @@ -488,7 +486,7 @@ fun RenderNIP05VerifiedSymbol( is Nip05VerifState.Failed -> { Icon( - imageVector = Icons.Default.Report, + symbol = MaterialSymbols.Report, contentDescription = stringRes(id = R.string.nip05_failed), modifier = modifier, tint = Color.Red, @@ -497,7 +495,7 @@ fun RenderNIP05VerifiedSymbol( is Nip05VerifState.Error -> { Icon( - imageVector = Icons.Default.Report, + symbol = MaterialSymbols.Report, contentDescription = stringRes(id = R.string.nip05_failed), modifier = modifier, tint = Color.Red, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt index 8f007e18f..8fabae8e9 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt @@ -34,9 +34,6 @@ import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.PushPin -import androidx.compose.material.icons.outlined.Timer import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton @@ -61,6 +58,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.commons.compose.produceCachedStateAsync +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatChannel import com.vitorpamplona.amethyst.model.AddressableNote import com.vitorpamplona.amethyst.model.Note @@ -1550,7 +1549,7 @@ fun DisplayExpiration(expirationDate: Long) { verticalAlignment = Alignment.CenterVertically, ) { Icon( - imageVector = Icons.Outlined.Timer, + symbol = MaterialSymbols.Timer, contentDescription = stringRes(R.string.expiration_date_label), modifier = Modifier.padding(start = 5.dp).size(15.dp), tint = MaterialTheme.colorScheme.placeholderText, @@ -1681,7 +1680,7 @@ fun FirstUserInfoRow( @Composable fun PinnedMark() { Icon( - imageVector = Icons.Default.PushPin, + symbol = MaterialSymbols.PushPin, contentDescription = stringRes(R.string.pinned_notes), modifier = Modifier.padding(start = 5.dp).size(16.dp), tint = MaterialTheme.colorScheme.placeholderText, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteQuickActionMenu.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteQuickActionMenu.kt index 6b934d34d..4dfbb1555 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteQuickActionMenu.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteQuickActionMenu.kt @@ -34,17 +34,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AlternateEmail -import androidx.compose.material.icons.filled.Block -import androidx.compose.material.icons.filled.ContentCopy -import androidx.compose.material.icons.filled.Delete -import androidx.compose.material.icons.filled.Edit -import androidx.compose.material.icons.filled.FormatQuote -import androidx.compose.material.icons.filled.PersonAdd -import androidx.compose.material.icons.filled.PersonRemove -import androidx.compose.material.icons.filled.Report -import androidx.compose.material.icons.filled.Share import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.ButtonColors @@ -66,16 +55,17 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalClipboard import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.res.vectorResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.window.Popup import androidx.core.graphics.ColorUtils import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.AddressableNote import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.User @@ -285,7 +275,7 @@ fun CardBody( Column(modifier = Modifier.width(IntrinsicSize.Min)) { Row(modifier = Modifier.height(IntrinsicSize.Min)) { NoteQuickActionItem( - icon = Icons.Default.ContentCopy, + icon = MaterialSymbols.ContentCopy, label = stringRes(R.string.quick_action_copy_text), ) { accountViewModel.decrypt(note) { @@ -299,7 +289,7 @@ fun CardBody( } VerticalDivider(color = primaryLight) NoteQuickActionItem( - Icons.Default.AlternateEmail, + MaterialSymbols.AlternateEmail, stringRes(R.string.quick_action_copy_user_id), ) { note.author?.let { @@ -312,7 +302,7 @@ fun CardBody( } VerticalDivider(color = primaryLight) NoteQuickActionItem( - Icons.Default.FormatQuote, + MaterialSymbols.FormatQuote, stringRes(R.string.quick_action_copy_note_id), ) { scope.launch { @@ -326,7 +316,7 @@ fun CardBody( VerticalDivider(color = primaryLight) NoteQuickActionItem( - Icons.Default.Block, + MaterialSymbols.Block, stringRes(R.string.quick_action_block), ) { if (accountViewModel.account.settings.hideBlockAlertDialog) { @@ -344,7 +334,7 @@ fun CardBody( Row(modifier = Modifier.height(IntrinsicSize.Min)) { if (isOwnNote) { NoteQuickActionItem( - Icons.Default.Delete, + MaterialSymbols.Delete, stringRes(R.string.quick_action_delete), ) { if (accountViewModel.account.settings.hideDeleteRequestDialog) { @@ -356,7 +346,7 @@ fun CardBody( } } else if (isFollowingUser) { NoteQuickActionItem( - Icons.Default.PersonRemove, + MaterialSymbols.PersonRemove, stringRes(R.string.quick_action_unfollow), ) { accountViewModel.unfollow(note.author!!) @@ -364,7 +354,7 @@ fun CardBody( } } else { NoteQuickActionItem( - Icons.Default.PersonAdd, + MaterialSymbols.PersonAdd, stringRes(R.string.quick_action_follow), ) { accountViewModel.follow(note.author!!) @@ -374,7 +364,7 @@ fun CardBody( VerticalDivider(color = primaryLight) NoteQuickActionItem( - icon = ImageVector.vectorResource(id = R.drawable.relays), + icon = MaterialSymbols.Dns, label = stringRes(R.string.broadcast), ) { accountViewModel.broadcast(note) @@ -384,14 +374,14 @@ fun CardBody( VerticalDivider(color = primaryLight) if (isOwnNote && note.isDraft()) { NoteQuickActionItem( - Icons.Default.Edit, + MaterialSymbols.Edit, stringRes(R.string.edit_draft), ) { onWantsToEditDraft() } } else { NoteQuickActionItem( - icon = Icons.Default.Share, + icon = MaterialSymbols.Share, label = stringRes(R.string.quick_action_share), ) { val sendIntent = @@ -422,7 +412,7 @@ fun CardBody( VerticalDivider(color = primaryLight) NoteQuickActionItem( - Icons.Default.Report, + MaterialSymbols.Report, stringRes(R.string.quick_action_report), ) { showReportDialog.value = true @@ -434,7 +424,7 @@ fun CardBody( @Composable fun NoteQuickActionItem( - icon: ImageVector, + icon: MaterialSymbol, label: String, onClick: () -> Unit, ) { @@ -447,7 +437,7 @@ fun NoteQuickActionItem( horizontalAlignment = Alignment.CenterHorizontally, ) { Icon( - imageVector = icon, + symbol = icon, contentDescription = null, modifier = Modifier @@ -468,7 +458,7 @@ fun DeleteAlertDialog( QuickActionAlertDialog( title = stringRes(R.string.quick_action_request_deletion_alert_title), textContent = stringRes(R.string.quick_action_request_deletion_alert_body), - buttonIcon = Icons.Default.Delete, + buttonIcon = MaterialSymbols.Delete, buttonText = stringRes(R.string.quick_action_delete_dialog_btn), onClickDoOnce = { accountViewModel.delete(note) @@ -491,7 +481,7 @@ private fun BlockAlertDialog( ) = QuickActionAlertDialog( title = stringRes(R.string.report_dialog_block_hide_user_btn), textContent = stringRes(R.string.report_dialog_blocking_a_user), - buttonIcon = Icons.Default.Block, + buttonIcon = MaterialSymbols.Block, buttonText = stringRes(R.string.quick_action_block_dialog_btn), buttonColors = ButtonDefaults.buttonColors( @@ -514,7 +504,7 @@ private fun BlockAlertDialog( fun QuickActionAlertDialog( title: String, textContent: String, - buttonIcon: ImageVector, + buttonIcon: MaterialSymbol, buttonText: String, buttonColors: ButtonColors = ButtonDefaults.buttonColors(), onClickDoOnce: () -> Unit, @@ -526,7 +516,7 @@ fun QuickActionAlertDialog( textContent = textContent, icon = { Icon( - imageVector = buttonIcon, + symbol = buttonIcon, contentDescription = null, ) }, @@ -615,7 +605,7 @@ fun QuickActionAlertDialog( fun QuickActionAlertDialogOneButton( title: String, textContent: String, - buttonIcon: ImageVector, + buttonIcon: MaterialSymbol, buttonText: String, buttonColors: ButtonColors = ButtonDefaults.buttonColors(), onClickDoOnce: () -> Unit, @@ -626,7 +616,7 @@ fun QuickActionAlertDialogOneButton( textContent = textContent, icon = { Icon( - imageVector = buttonIcon, + symbol = buttonIcon, contentDescription = null, ) }, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt index 95966426c..f439d8633 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt @@ -50,8 +50,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.AccountBalanceWallet import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.CardDefaults @@ -103,6 +101,8 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.commons.emojicoder.EmojiCoder +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.ReactionRowAction import com.vitorpamplona.amethyst.model.ReactionRowItem @@ -361,7 +361,7 @@ fun PayReaction( onClick = { expanded = true }, ) { Icon( - imageVector = Icons.Outlined.AccountBalanceWallet, + symbol = MaterialSymbols.AccountBalanceWallet, contentDescription = stringRes(R.string.payment_targets), tint = grayTint, modifier = iconSizeModifier, @@ -376,7 +376,7 @@ fun PayReaction( M3ActionSection { if (targets.isEmpty()) { M3ActionRow( - icon = Icons.Outlined.AccountBalanceWallet, + icon = MaterialSymbols.AccountBalanceWallet, text = stringRes(R.string.no_payment_targets_message), enabled = false, onClick = {}, @@ -384,7 +384,7 @@ fun PayReaction( } else { targets.forEach { target -> M3ActionRow( - icon = Icons.Outlined.AccountBalanceWallet, + icon = MaterialSymbols.AccountBalanceWallet, text = "${target.type.replaceFirstChar(Char::titlecase)}: ${target.authority}", onClick = { expanded = false diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/RelayListBox.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/RelayListBox.kt index 6362a72b1..5a5430e6f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/RelayListBox.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/RelayListBox.kt @@ -33,8 +33,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ExpandMore import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -50,6 +48,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.ui.actions.CrossfadeIfEnabled import com.vitorpamplona.amethyst.ui.navigation.navs.INav @@ -242,7 +242,7 @@ private fun ShowMoreRelaysButton(onClick: () -> Unit) { onClick = onClick, ) { Icon( - imageVector = Icons.Default.ExpandMore, + symbol = MaterialSymbols.ExpandMore, contentDescription = stringRes(id = R.string.expand_relay_list), tint = MaterialTheme.colorScheme.placeholderText, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/RelayListRow.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/RelayListRow.kt index a08e1c933..0befd286b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/RelayListRow.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/RelayListRow.kt @@ -30,8 +30,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ChevronRight import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -50,6 +48,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.nip11RelayInfo.loadRelayInfo import com.vitorpamplona.amethyst.ui.components.ClickableBox @@ -114,7 +114,7 @@ fun ChatRelayExpandButton(onClick: () -> Unit) { onClick = onClick, ) { Icon( - imageVector = Icons.Default.ChevronRight, + symbol = MaterialSymbols.ChevronRight, contentDescription = stringRes(id = R.string.expand_relay_list), modifier = Size15Modifier, tint = MaterialTheme.colorScheme.placeholderText, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt index a3827159d..571be707f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt @@ -60,17 +60,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.Close -import androidx.compose.material.icons.filled.ExpandLess -import androidx.compose.material.icons.filled.ExpandMore -import androidx.compose.material.icons.outlined.Add -import androidx.compose.material.icons.outlined.AddCircle -import androidx.compose.material.icons.outlined.ContentPaste -import androidx.compose.material.icons.outlined.RadioButtonUnchecked -import androidx.compose.material.icons.outlined.Visibility -import androidx.compose.material.icons.outlined.VisibilityOff import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -102,6 +91,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.components.TextSpinner import com.vitorpamplona.amethyst.ui.components.TitleExplainer import com.vitorpamplona.amethyst.ui.components.util.getText @@ -259,7 +250,7 @@ fun UpdateZapAmountContent( }, trailingIcon = { Icon( - imageVector = Icons.Filled.Close, + symbol = MaterialSymbols.Close, contentDescription = stringRes(R.string.remove), modifier = Modifier.size(InputChipDefaults.AvatarSize), ) @@ -304,7 +295,7 @@ fun UpdateZapAmountContent( enabled = postViewModel.nextAmount.text.isNotBlank(), ) { Icon( - imageVector = Icons.Outlined.AddCircle, + symbol = MaterialSymbols.AddCircle, contentDescription = stringRes(R.string.add), modifier = Size20Modifier, ) @@ -394,7 +385,7 @@ fun UpdateZapAmountContent( horizontalArrangement = Arrangement.spacedBy(6.dp), ) { Icon( - imageVector = if (connected) Icons.Filled.CheckCircle else Icons.Outlined.RadioButtonUnchecked, + symbol = if (connected) MaterialSymbols.CheckCircle else MaterialSymbols.RadioButtonUnchecked, contentDescription = null, tint = statusColor, modifier = Modifier.size(18.dp), @@ -436,7 +427,7 @@ fun UpdateZapAmountContent( }, ) { Icon( - imageVector = Icons.Outlined.Add, + symbol = MaterialSymbols.Add, contentDescription = null, modifier = Modifier.size(18.dp), ) @@ -464,7 +455,7 @@ fun UpdateZapAmountContent( }, ) { Icon( - imageVector = Icons.Outlined.ContentPaste, + symbol = MaterialSymbols.ContentPaste, contentDescription = stringRes(id = R.string.paste_from_clipboard), modifier = Size24Modifier, tint = MaterialTheme.colorScheme.primary, @@ -522,7 +513,7 @@ fun UpdateZapAmountContent( fontSize = Font14SP, ) Icon( - imageVector = if (showManualConfig) Icons.Filled.ExpandLess else Icons.Filled.ExpandMore, + symbol = if (showManualConfig) MaterialSymbols.ExpandLess else MaterialSymbols.ExpandMore, contentDescription = null, tint = MaterialTheme.colorScheme.placeholderText, modifier = Modifier.size(20.dp), @@ -629,11 +620,11 @@ fun UpdateZapAmountContent( }, ) { Icon( - imageVector = + symbol = if (showPassword) { - Icons.Outlined.VisibilityOff + MaterialSymbols.VisibilityOff } else { - Icons.Outlined.Visibility + MaterialSymbols.Visibility }, contentDescription = if (showPassword) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/UserReactionsRow.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/UserReactionsRow.kt index 9353ba629..08a976bd3 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/UserReactionsRow.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/UserReactionsRow.kt @@ -25,9 +25,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Bolt -import androidx.compose.material.icons.filled.ExpandMore import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -42,6 +39,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.screen.loggedIn.notifications.NotificationSummaryState import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange @@ -70,7 +69,7 @@ fun UserReactionsRow( ) Icon( - imageVector = Icons.Default.ExpandMore, + symbol = MaterialSymbols.ExpandMore, null, modifier = Size20Modifier, tint = MaterialTheme.colorScheme.placeholderText, @@ -98,7 +97,7 @@ fun UserReactionsRow( @Composable private fun UserZapModel(model: NotificationSummaryState) { Icon( - imageVector = Icons.Default.Bolt, + symbol = MaterialSymbols.Bolt, contentDescription = stringRes(R.string.zaps), modifier = Size24Modifier, tint = BitcoinOrange, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapPollNote.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapPollNote.kt index 4874e5619..66d65e2e5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapPollNote.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapPollNote.kt @@ -38,9 +38,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Bolt -import androidx.compose.material.icons.outlined.Bolt import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.CircularProgressIndicator @@ -75,6 +72,8 @@ import androidx.compose.ui.window.Popup import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.EmptyTagList import com.vitorpamplona.amethyst.commons.model.ImmutableListOfLists import com.vitorpamplona.amethyst.commons.model.toImmutableListOfLists @@ -659,7 +658,7 @@ fun ZapVote( if (poolOption.zappedByLoggedIn.value) { zappingProgress = 1f Icon( - imageVector = Icons.Default.Bolt, + symbol = MaterialSymbols.Bolt, contentDescription = stringRes(R.string.zaps), modifier = Modifier.size(20.dp), tint = BitcoinOrange, @@ -667,7 +666,7 @@ fun ZapVote( } else { if (zappingProgress < 0.1 || zappingProgress > 0.99) { Icon( - imageVector = Icons.Outlined.Bolt, + symbol = MaterialSymbols.Bolt, contentDescription = stringRes(id = R.string.zaps), modifier = Modifier.size(20.dp), tint = MaterialTheme.colorScheme.placeholderText, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/aihelp/AiWritingHelpButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/aihelp/AiWritingHelpButton.kt index c2e2a7b61..bec145a3d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/aihelp/AiWritingHelpButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/aihelp/AiWritingHelpButton.kt @@ -21,8 +21,6 @@ package com.vitorpamplona.amethyst.ui.note.creators.aihelp import androidx.compose.foundation.layout.height -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.AutoAwesome import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -30,6 +28,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes @Composable @@ -41,7 +41,7 @@ fun AiWritingHelpButton( onClick = { onClick() }, ) { Icon( - imageVector = Icons.Outlined.AutoAwesome, + symbol = MaterialSymbols.AutoAwesome, contentDescription = stringRes(R.string.ai_writing_help), modifier = Modifier.height(22.dp), tint = diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/anonymous/AnonymousPostButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/anonymous/AnonymousPostButton.kt index 29a0f43ea..4d71fface 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/anonymous/AnonymousPostButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/anonymous/AnonymousPostButton.kt @@ -20,14 +20,14 @@ */ package com.vitorpamplona.amethyst.ui.note.creators.anonymous -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.PersonOff import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.Size19Modifier @@ -41,14 +41,14 @@ fun AnonymousPostButton( ) { if (!isActive) { Icon( - imageVector = Icons.Default.PersonOff, + symbol = MaterialSymbols.PersonOff, contentDescription = stringRes(R.string.post_anonymously), modifier = Size19Modifier, tint = MaterialTheme.colorScheme.onBackground, ) } else { Icon( - imageVector = Icons.Default.PersonOff, + symbol = MaterialSymbols.PersonOff, contentDescription = stringRes(R.string.post_anonymously), modifier = Size19Modifier, tint = Color.Red, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/contentWarning/ContentSensitivityExplainer.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/contentWarning/ContentSensitivityExplainer.kt index c407871b7..8cf94a126 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/contentWarning/ContentSensitivityExplainer.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/contentWarning/ContentSensitivityExplainer.kt @@ -28,9 +28,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.VisibilityOff -import androidx.compose.material.icons.rounded.Warning import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -44,6 +41,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.DividerThickness import com.vitorpamplona.amethyst.ui.theme.placeholderText @@ -67,7 +66,7 @@ fun ContentSensitivityExplainer( .width(25.dp), ) { Icon( - imageVector = Icons.Default.VisibilityOff, + symbol = MaterialSymbols.VisibilityOff, contentDescription = stringRes(id = R.string.content_warning), modifier = Modifier @@ -76,7 +75,7 @@ fun ContentSensitivityExplainer( tint = Color.Red, ) Icon( - imageVector = Icons.Rounded.Warning, + symbol = MaterialSymbols.Warning, contentDescription = stringRes(id = R.string.content_warning), modifier = Modifier diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/contentWarning/MarkAsSensitiveButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/contentWarning/MarkAsSensitiveButton.kt index 855c0f619..fe823969c 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/contentWarning/MarkAsSensitiveButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/contentWarning/MarkAsSensitiveButton.kt @@ -24,10 +24,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Visibility -import androidx.compose.material.icons.filled.VisibilityOff -import androidx.compose.material.icons.rounded.Warning import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -37,6 +33,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes @Composable @@ -54,7 +52,7 @@ fun MarkAsSensitiveButton( ) { if (!isActive) { Icon( - imageVector = Icons.Default.Visibility, + symbol = MaterialSymbols.Visibility, contentDescription = stringRes(R.string.add_content_warning), modifier = Modifier @@ -63,7 +61,7 @@ fun MarkAsSensitiveButton( tint = MaterialTheme.colorScheme.onBackground, ) Icon( - imageVector = Icons.Rounded.Warning, + symbol = MaterialSymbols.Warning, contentDescription = stringRes(R.string.add_content_warning), modifier = Modifier @@ -73,7 +71,7 @@ fun MarkAsSensitiveButton( ) } else { Icon( - imageVector = Icons.Default.VisibilityOff, + symbol = MaterialSymbols.VisibilityOff, contentDescription = stringRes(id = R.string.remove_content_warning), modifier = Modifier @@ -82,7 +80,7 @@ fun MarkAsSensitiveButton( tint = Color.Red, ) Icon( - imageVector = Icons.Rounded.Warning, + symbol = MaterialSymbols.Warning, contentDescription = stringRes(id = R.string.remove_content_warning), modifier = Modifier diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/emojiSuggestions/ShowEmojiSuggestionList.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/emojiSuggestions/ShowEmojiSuggestionList.kt index 55f7724ee..b1640e4d2 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/emojiSuggestions/ShowEmojiSuggestionList.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/emojiSuggestions/ShowEmojiSuggestionList.kt @@ -28,8 +28,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.OpenInFull import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -43,6 +41,8 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil3.compose.AsyncImage import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.nip30CustomEmojis.EmojiPackState import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.DividerThickness @@ -88,7 +88,7 @@ fun ShowEmojiSuggestionList( }, ) { Icon( - imageVector = Icons.Outlined.OpenInFull, + symbol = MaterialSymbols.OpenInFull, contentDescription = stringRes(R.string.use_direct_url), modifier = Modifier.size(20.dp), ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/expiration/ExpirationDateButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/expiration/ExpirationDateButton.kt index 487662291..aeb338cd8 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/expiration/ExpirationDateButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/expiration/ExpirationDateButton.kt @@ -21,9 +21,6 @@ package com.vitorpamplona.amethyst.ui.note.creators.expiration import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Timer -import androidx.compose.material.icons.outlined.TimerOff import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -32,6 +29,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes @Composable @@ -44,14 +43,14 @@ fun ExpirationDateButton( ) { if (!isActive) { Icon( - imageVector = Icons.Outlined.Timer, + symbol = MaterialSymbols.Timer, contentDescription = stringRes(R.string.add_expiration_date), modifier = Modifier.size(20.dp), tint = MaterialTheme.colorScheme.onBackground, ) } else { Icon( - imageVector = Icons.Outlined.TimerOff, + symbol = MaterialSymbols.TimerOff, contentDescription = stringRes(R.string.remove_expiration_date), modifier = Modifier.size(20.dp), tint = Color(0xFFFF6600), diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/expiration/ExpirationDatePicker.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/expiration/ExpirationDatePicker.kt index d494117dd..7aa329478 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/expiration/ExpirationDatePicker.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/expiration/ExpirationDatePicker.kt @@ -27,8 +27,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Timer import androidx.compose.material3.DatePicker import androidx.compose.material3.DatePickerDialog import androidx.compose.material3.ExperimentalMaterial3Api @@ -57,6 +55,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.note.timeAheadNoDot import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.DividerThickness @@ -102,7 +102,7 @@ fun ExpirationDatePicker(model: IExpiration) { .padding(bottom = 5.dp), ) { Icon( - imageVector = Icons.Outlined.Timer, + symbol = MaterialSymbols.Timer, contentDescription = stringRes(R.string.expiration_date_label), modifier = Modifier.size(20.dp), tint = Color(0xFFFF6600), @@ -132,7 +132,7 @@ fun ExpirationDatePicker(model: IExpiration) { modifier = Modifier.padding(16.dp), verticalAlignment = Alignment.CenterVertically, ) { - Icon(Icons.Outlined.Timer, contentDescription = stringResource(R.string.expiration_date_select)) + Icon(MaterialSymbols.Timer, contentDescription = stringResource(R.string.expiration_date_select)) Spacer(Modifier.width(12.dp)) if (model.expirationDate < TimeUtils.oneMinuteFromNow()) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/invoice/AddLnInvoiceButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/invoice/AddLnInvoiceButton.kt index c4c6f9f8c..49c30955e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/invoice/AddLnInvoiceButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/invoice/AddLnInvoiceButton.kt @@ -20,13 +20,13 @@ */ package com.vitorpamplona.amethyst.ui.note.creators.invoice -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.CurrencyBitcoin import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange import com.vitorpamplona.amethyst.ui.theme.Size20Modifier @@ -41,14 +41,14 @@ fun AddLnInvoiceButton( ) { if (!isLnInvoiceActive) { Icon( - imageVector = Icons.Default.CurrencyBitcoin, + symbol = MaterialSymbols.CurrencyBitcoin, contentDescription = stringRes(id = R.string.add_bitcoin_invoice), modifier = Size20Modifier, tint = MaterialTheme.colorScheme.onBackground, ) } else { Icon( - imageVector = Icons.Default.CurrencyBitcoin, + symbol = MaterialSymbols.CurrencyBitcoin, contentDescription = stringRes(id = R.string.cancel_bitcoin_invoice), modifier = Size20Modifier, tint = BitcoinOrange, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/location/AddGeoHashButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/location/AddGeoHashButton.kt index 32407165e..40c8c6547 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/location/AddGeoHashButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/location/AddGeoHashButton.kt @@ -21,9 +21,6 @@ package com.vitorpamplona.amethyst.ui.note.creators.location import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.LocationOff -import androidx.compose.material.icons.filled.LocationOn import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -31,6 +28,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes @Composable @@ -43,14 +42,14 @@ fun AddGeoHashButton( ) { if (!isActive) { Icon( - imageVector = Icons.Default.LocationOff, + symbol = MaterialSymbols.LocationOff, contentDescription = stringRes(id = R.string.add_location), modifier = Modifier.size(20.dp), tint = MaterialTheme.colorScheme.onBackground, ) } else { Icon( - imageVector = Icons.Default.LocationOn, + symbol = MaterialSymbols.LocationOn, contentDescription = stringRes(id = R.string.remove_location), modifier = Modifier.size(20.dp), tint = MaterialTheme.colorScheme.primary, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/location/LocationAsHash.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/location/LocationAsHash.kt index ff1fca238..d11c50346 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/location/LocationAsHash.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/location/LocationAsHash.kt @@ -29,8 +29,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.LocationOn import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -46,6 +44,8 @@ import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.google.accompanist.permissions.isGranted import com.google.accompanist.permissions.rememberPermissionState import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.DividerThickness import com.vitorpamplona.amethyst.ui.theme.placeholderText @@ -93,7 +93,7 @@ fun DisplayLocationBox( .width(20.dp), ) { Icon( - imageVector = Icons.Default.LocationOn, + symbol = MaterialSymbols.LocationOn, null, modifier = Modifier.size(20.dp), tint = MaterialTheme.colorScheme.primary, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/polls/PollDeadlinePicker.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/polls/PollDeadlinePicker.kt index f67671f58..6904aa52a 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/polls/PollDeadlinePicker.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/polls/PollDeadlinePicker.kt @@ -26,8 +26,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.DateRange import androidx.compose.material3.DatePicker import androidx.compose.material3.DatePickerDialog import androidx.compose.material3.ExperimentalMaterial3Api @@ -53,6 +51,8 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.note.timeAheadNoDot import com.vitorpamplona.amethyst.ui.screen.loggedIn.home.ShortNotePostViewModel import com.vitorpamplona.amethyst.ui.stringRes @@ -99,7 +99,7 @@ fun PollDeadlinePicker(model: ShortNotePostViewModel) { modifier = Modifier.padding(16.dp), verticalAlignment = Alignment.CenterVertically, ) { - Icon(Icons.Default.DateRange, contentDescription = stringResource(R.string.accessibility_select_date)) + Icon(MaterialSymbols.DateRange, contentDescription = stringResource(R.string.accessibility_select_date)) Spacer(Modifier.width(12.dp)) if (model.closedAt < TimeUtils.oneMinuteFromNow()) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/polls/PollOptionsField.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/polls/PollOptionsField.kt index a95acdcdf..ba8755de5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/polls/PollOptionsField.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/polls/PollOptionsField.kt @@ -29,9 +29,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Delete import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.FilterChip @@ -46,6 +43,8 @@ import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.screen.loggedIn.home.ShortNotePostViewModel import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.placeholderText @@ -96,7 +95,7 @@ fun PollOptionsField(postViewModel: ShortNotePostViewModel) { }, ) { Icon( - imageVector = Icons.Default.Delete, + symbol = MaterialSymbols.Delete, contentDescription = stringRes(R.string.clear), ) } @@ -124,7 +123,7 @@ fun PollOptionsField(postViewModel: ShortNotePostViewModel) { containerColor = MaterialTheme.colorScheme.surface, ), ) { - Icon(Icons.Default.Add, contentDescription = stringRes(R.string.add_poll_option_button)) + Icon(MaterialSymbols.Add, contentDescription = stringRes(R.string.add_poll_option_button)) } } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/secretEmoji/AddSecretEmojiButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/secretEmoji/AddSecretEmojiButton.kt index 1a455b079..21dafbb04 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/secretEmoji/AddSecretEmojiButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/secretEmoji/AddSecretEmojiButton.kt @@ -20,13 +20,13 @@ */ package com.vitorpamplona.amethyst.ui.note.creators.secretEmoji -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Assistant import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange import com.vitorpamplona.amethyst.ui.theme.Size20Modifier @@ -41,14 +41,14 @@ fun AddSecretEmojiButton( ) { if (!isSecretEmojiActive) { Icon( - imageVector = Icons.Outlined.Assistant, + symbol = MaterialSymbols.Assistant, contentDescription = stringRes(id = R.string.secret_emoji_maker_explainer), modifier = Size20Modifier, tint = MaterialTheme.colorScheme.onBackground, ) } else { Icon( - imageVector = Icons.Outlined.Assistant, + symbol = MaterialSymbols.Assistant, contentDescription = stringRes(id = R.string.secret_emoji_maker_explainer), modifier = Size20Modifier, tint = BitcoinOrange, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/secretEmoji/SecretEmojiRequest.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/secretEmoji/SecretEmojiRequest.kt index 6126fd837..c7f404888 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/secretEmoji/SecretEmojiRequest.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/secretEmoji/SecretEmojiRequest.kt @@ -25,8 +25,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Assistant import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.HorizontalDivider @@ -48,6 +46,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.commons.emojicoder.EmojiCoder +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.DividerThickness import com.vitorpamplona.amethyst.ui.theme.QuoteBorder @@ -62,7 +62,7 @@ fun SecretEmojiRequest(onSuccess: (String) -> Unit) { modifier = Modifier.fillMaxWidth().padding(bottom = 5.dp), ) { Icon( - imageVector = Icons.Outlined.Assistant, + symbol = MaterialSymbols.Assistant, null, modifier = Size20Modifier, tint = MaterialTheme.colorScheme.onBackground, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zappolls/ZapPollDeadlinePicker.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zappolls/ZapPollDeadlinePicker.kt index 295c2d8d2..8e707215d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zappolls/ZapPollDeadlinePicker.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zappolls/ZapPollDeadlinePicker.kt @@ -26,8 +26,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.DateRange import androidx.compose.material3.DatePicker import androidx.compose.material3.DatePickerDialog import androidx.compose.material3.ExperimentalMaterial3Api @@ -53,6 +51,8 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.note.timeAheadNoDot import com.vitorpamplona.amethyst.ui.screen.loggedIn.home.ShortNotePostViewModel import com.vitorpamplona.amethyst.ui.stringRes @@ -99,7 +99,7 @@ fun ZapPollDeadlinePicker(model: ShortNotePostViewModel) { modifier = Modifier.padding(16.dp), verticalAlignment = Alignment.CenterVertically, ) { - Icon(Icons.Default.DateRange, contentDescription = stringResource(R.string.accessibility_select_date)) + Icon(MaterialSymbols.DateRange, contentDescription = stringResource(R.string.accessibility_select_date)) Spacer(Modifier.width(12.dp)) if (model.zapPollClosedAt < TimeUtils.oneMinuteFromNow()) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zappolls/ZapPollField.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zappolls/ZapPollField.kt index 78e2c02af..fb884b28c 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zappolls/ZapPollField.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zappolls/ZapPollField.kt @@ -25,8 +25,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Icon @@ -35,6 +33,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.screen.loggedIn.home.ShortNotePostViewModel import com.vitorpamplona.amethyst.ui.stringRes @@ -69,7 +69,7 @@ fun ZapPollField(postViewModel: ShortNotePostViewModel) { containerColor = MaterialTheme.colorScheme.surface, ), ) { - Icon(Icons.Default.Add, contentDescription = stringRes(R.string.add_poll_option_button)) + Icon(MaterialSymbols.Add, contentDescription = stringRes(R.string.add_poll_option_button)) } } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zappolls/ZapPollOption.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zappolls/ZapPollOption.kt index 4bdee9e07..6b5672d76 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zappolls/ZapPollOption.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zappolls/ZapPollOption.kt @@ -23,8 +23,6 @@ package com.vitorpamplona.amethyst.ui.note.creators.zappolls import android.annotation.SuppressLint import androidx.compose.foundation.layout.Row import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Delete import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -35,6 +33,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.tooling.preview.Preview import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.screen.loggedIn.home.ShortNotePostViewModel import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.placeholderText @@ -52,7 +52,7 @@ fun ZapPollOption( }, ) { Icon( - imageVector = Icons.Default.Delete, + symbol = MaterialSymbols.Delete, contentDescription = stringRes(R.string.clear), ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zapraiser/AddZapraiserButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zapraiser/AddZapraiserButton.kt index 6c68b9cdd..53f247a56 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zapraiser/AddZapraiserButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zapraiser/AddZapraiserButton.kt @@ -24,9 +24,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ShowChart -import androidx.compose.material.icons.filled.Bolt import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -35,6 +32,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange @@ -53,7 +52,7 @@ fun AddZapraiserButton( ) { if (!isLnInvoiceActive) { Icon( - imageVector = Icons.AutoMirrored.Default.ShowChart, + symbol = MaterialSymbols.AutoMirrored.ShowChart, null, modifier = Modifier @@ -62,7 +61,7 @@ fun AddZapraiserButton( tint = MaterialTheme.colorScheme.onBackground, ) Icon( - imageVector = Icons.Default.Bolt, + symbol = MaterialSymbols.Bolt, contentDescription = stringRes(R.string.add_zapraiser), modifier = Modifier @@ -72,7 +71,7 @@ fun AddZapraiserButton( ) } else { Icon( - imageVector = Icons.AutoMirrored.Default.ShowChart, + symbol = MaterialSymbols.AutoMirrored.ShowChart, null, modifier = Modifier @@ -81,7 +80,7 @@ fun AddZapraiserButton( tint = BitcoinOrange, ) Icon( - imageVector = Icons.Default.Bolt, + symbol = MaterialSymbols.Bolt, contentDescription = stringRes(R.string.cancel_zapraiser), modifier = Modifier diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zapsplits/ForwardZapToButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zapsplits/ForwardZapToButton.kt index 4954c8605..5988f00bd 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zapsplits/ForwardZapToButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/creators/zapsplits/ForwardZapToButton.kt @@ -25,9 +25,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.outlined.ArrowForwardIos -import androidx.compose.material.icons.outlined.Bolt import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -39,6 +36,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.commons.icons.ZapSplit +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange import com.vitorpamplona.amethyst.ui.theme.Size20Modifier @@ -82,7 +81,7 @@ fun ZapSplitPreview() { .width(25.dp), ) { Icon( - imageVector = Icons.Outlined.Bolt, + symbol = MaterialSymbols.Bolt, contentDescription = stringRes(id = R.string.zaps), modifier = Modifier @@ -91,7 +90,7 @@ fun ZapSplitPreview() { tint = BitcoinOrange, ) Icon( - imageVector = Icons.AutoMirrored.Outlined.ArrowForwardIos, + symbol = MaterialSymbols.AutoMirrored.ArrowForwardIos, contentDescription = stringRes(id = R.string.zaps), modifier = Modifier diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DropDownMenu.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DropDownMenu.kt index c5b8879e5..1100c439f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DropDownMenu.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/DropDownMenu.kt @@ -21,24 +21,6 @@ package com.vitorpamplona.amethyst.ui.note.elements import android.content.Intent -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.outlined.PlaylistAdd -import androidx.compose.material.icons.outlined.Bookmark -import androidx.compose.material.icons.outlined.BookmarkAdd -import androidx.compose.material.icons.outlined.BookmarkRemove -import androidx.compose.material.icons.outlined.CellTower -import androidx.compose.material.icons.outlined.ContentCopy -import androidx.compose.material.icons.outlined.Delete -import androidx.compose.material.icons.outlined.Edit -import androidx.compose.material.icons.outlined.EmojiEmotions -import androidx.compose.material.icons.outlined.Lock -import androidx.compose.material.icons.outlined.LockOpen -import androidx.compose.material.icons.outlined.PersonAdd -import androidx.compose.material.icons.outlined.PersonRemove -import androidx.compose.material.icons.outlined.PushPin -import androidx.compose.material.icons.outlined.Report -import androidx.compose.material.icons.outlined.Schedule -import androidx.compose.material.icons.outlined.Share import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable import androidx.compose.runtime.State @@ -51,6 +33,7 @@ import androidx.compose.ui.platform.LocalClipboard import androidx.compose.ui.platform.LocalContext import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.AddressableNote import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.ui.actions.EditPostView @@ -177,19 +160,19 @@ fun NoteDropDownMenu( // Follow section M3ActionSection { if (!state.isFollowingAuthor) { - M3ActionRow(icon = Icons.Outlined.PersonAdd, text = stringRes(R.string.follow)) { + M3ActionRow(icon = MaterialSymbols.PersonAdd, text = stringRes(R.string.follow)) { val author = note.author ?: return@M3ActionRow accountViewModel.follow(author) onDismiss() } } else { - M3ActionRow(icon = Icons.Outlined.PersonRemove, text = stringRes(R.string.unfollow)) { + M3ActionRow(icon = MaterialSymbols.PersonRemove, text = stringRes(R.string.unfollow)) { val author = note.author ?: return@M3ActionRow accountViewModel.unfollow(author) onDismiss() } } - M3ActionRow(icon = Icons.AutoMirrored.Outlined.PlaylistAdd, text = stringRes(R.string.follow_set_add_author_from_note_action)) { + M3ActionRow(icon = MaterialSymbols.AutoMirrored.PlaylistAdd, text = stringRes(R.string.follow_set_add_author_from_note_action)) { val authorHexKey = note.author?.pubkeyHex ?: return@M3ActionRow nav.nav(Route.PeopleListManagement(authorHexKey)) onDismiss() @@ -198,7 +181,7 @@ fun NoteDropDownMenu( // Copy & Share section M3ActionSection { - M3ActionRow(icon = Icons.Outlined.ContentCopy, text = stringRes(R.string.copy_text)) { + M3ActionRow(icon = MaterialSymbols.ContentCopy, text = stringRes(R.string.copy_text)) { val lastNoteVersion = (editState?.value as? GenericLoadable.Loaded)?.loaded?.modificationToShow?.value ?: note accountViewModel.decrypt(lastNoteVersion) { scope.launch { @@ -207,7 +190,7 @@ fun NoteDropDownMenu( } onDismiss() } - M3ActionRow(icon = Icons.Outlined.ContentCopy, text = stringRes(R.string.copy_user_pubkey)) { + M3ActionRow(icon = MaterialSymbols.ContentCopy, text = stringRes(R.string.copy_user_pubkey)) { note.author?.let { scope.launch(Dispatchers.IO) { clipboardManager.setText("nostr:${it.pubkeyNpub()}") @@ -215,13 +198,13 @@ fun NoteDropDownMenu( } } } - M3ActionRow(icon = Icons.Outlined.ContentCopy, text = stringRes(R.string.copy_note_id)) { + M3ActionRow(icon = MaterialSymbols.ContentCopy, text = stringRes(R.string.copy_note_id)) { scope.launch(Dispatchers.IO) { clipboardManager.setText(note.toNostrUri()) onDismiss() } } - M3ActionRow(icon = Icons.Outlined.Share, text = stringRes(R.string.quick_action_share)) { + M3ActionRow(icon = MaterialSymbols.Share, text = stringRes(R.string.quick_action_share)) { val sendIntent = Intent().apply { action = Intent.ACTION_SEND @@ -238,28 +221,28 @@ fun NoteDropDownMenu( // Edit & Broadcast section M3ActionSection { if (state.isLoggedUser && note.isDraft()) { - M3ActionRow(icon = Icons.Outlined.Edit, text = stringRes(R.string.edit_draft)) { + M3ActionRow(icon = MaterialSymbols.Edit, text = stringRes(R.string.edit_draft)) { nav.nav { routeEditDraftTo(note, accountViewModel.account) } } } if (!note.isDraft()) { if (note.event is TextNoteEvent) { if (state.isLoggedUser) { - M3ActionRow(icon = Icons.Outlined.Edit, text = stringRes(R.string.edit_post)) { + M3ActionRow(icon = MaterialSymbols.Edit, text = stringRes(R.string.edit_post)) { wantsToEditPost.value = true } } else { - M3ActionRow(icon = Icons.Outlined.Edit, text = stringRes(R.string.propose_an_edit)) { + M3ActionRow(icon = MaterialSymbols.Edit, text = stringRes(R.string.propose_an_edit)) { wantsToEditPost.value = true } } } else if (note.event is LongTextNoteEvent && state.isLoggedUser) { - M3ActionRow(icon = Icons.Outlined.Edit, text = stringRes(R.string.edit_article)) { + M3ActionRow(icon = MaterialSymbols.Edit, text = stringRes(R.string.edit_article)) { nav.nav { Route.NewLongFormPost(version = note.idHex) } } } } - M3ActionRow(icon = Icons.Outlined.CellTower, text = stringRes(R.string.broadcast)) { + M3ActionRow(icon = MaterialSymbols.CellTower, text = stringRes(R.string.broadcast)) { accountViewModel.broadcast(note) onDismiss() } @@ -268,21 +251,21 @@ fun NoteDropDownMenu( // Timestamp & Bookmarks section M3ActionSection { if (accountViewModel.account.otsState.hasPendingAttestations(note)) { - M3ActionRow(icon = Icons.Outlined.Schedule, text = stringRes(R.string.timestamp_pending)) { onDismiss() } + M3ActionRow(icon = MaterialSymbols.Schedule, text = stringRes(R.string.timestamp_pending)) { onDismiss() } } else { - M3ActionRow(icon = Icons.Outlined.Schedule, text = stringRes(R.string.timestamp_it)) { + M3ActionRow(icon = MaterialSymbols.Schedule, text = stringRes(R.string.timestamp_it)) { accountViewModel.timestamp(note) onDismiss() } } if (state.isLoggedUser) { if (state.isPinnedNote) { - M3ActionRow(icon = Icons.Outlined.PushPin, text = stringRes(R.string.unpin_from_profile)) { + M3ActionRow(icon = MaterialSymbols.PushPin, text = stringRes(R.string.unpin_from_profile)) { accountViewModel.removePin(note) onDismiss() } } else { - M3ActionRow(icon = Icons.Outlined.PushPin, text = stringRes(R.string.pin_to_profile)) { + M3ActionRow(icon = MaterialSymbols.PushPin, text = stringRes(R.string.pin_to_profile)) { accountViewModel.addPin(note) onDismiss() } @@ -296,14 +279,14 @@ fun NoteDropDownMenu( } else { stringRes(R.string.add_to_emoji_list) } - M3ActionRow(icon = Icons.Outlined.EmojiEmotions, text = emojiText) { + M3ActionRow(icon = MaterialSymbols.EmojiEmotions, text = emojiText) { val address = (note as AddressableNote).address nav.nav(Route.EmojiPackSelection(kind = EmojiPackEvent.KIND, pubKeyHex = address.pubKeyHex, dTag = address.dTag)) onDismiss() } } else { val noteBookmarkType = if (note.event is LongTextNoteEvent) stringRes(R.string.article) else stringRes(R.string.post) - M3ActionRow(icon = Icons.Outlined.BookmarkAdd, text = stringRes(R.string.manage_bookmark_label, noteBookmarkType)) { + M3ActionRow(icon = MaterialSymbols.BookmarkAdd, text = stringRes(R.string.manage_bookmark_label, noteBookmarkType)) { if (note.event is LongTextNoteEvent) { nav.nav(Route.ArticleBookmarkManagement((note as AddressableNote).address)) } else { @@ -313,23 +296,23 @@ fun NoteDropDownMenu( } } if (state.isPrivateBookmarkNote) { - M3ActionRow(icon = Icons.Outlined.LockOpen, text = stringRes(R.string.remove_from_private_bookmarks)) { + M3ActionRow(icon = MaterialSymbols.LockOpen, text = stringRes(R.string.remove_from_private_bookmarks)) { accountViewModel.removePrivateBookmark(note) onDismiss() } } else { - M3ActionRow(icon = Icons.Outlined.Lock, text = stringRes(R.string.add_to_private_bookmarks)) { + M3ActionRow(icon = MaterialSymbols.Lock, text = stringRes(R.string.add_to_private_bookmarks)) { accountViewModel.addPrivateBookmark(note) onDismiss() } } if (state.isPublicBookmarkNote) { - M3ActionRow(icon = Icons.Outlined.BookmarkRemove, text = stringRes(R.string.remove_from_public_bookmarks)) { + M3ActionRow(icon = MaterialSymbols.BookmarkRemove, text = stringRes(R.string.remove_from_public_bookmarks)) { accountViewModel.removePublicBookmark(note) onDismiss() } } else { - M3ActionRow(icon = Icons.Outlined.Bookmark, text = stringRes(R.string.add_to_public_bookmarks)) { + M3ActionRow(icon = MaterialSymbols.Bookmark, text = stringRes(R.string.add_to_public_bookmarks)) { accountViewModel.addPublicBookmark(note) onDismiss() } @@ -339,12 +322,12 @@ fun NoteDropDownMenu( // Moderation section M3ActionSection { if (state.isLoggedUser) { - M3ActionRow(icon = Icons.Outlined.Delete, text = stringRes(R.string.request_deletion), isDestructive = true) { + M3ActionRow(icon = MaterialSymbols.Delete, text = stringRes(R.string.request_deletion), isDestructive = true) { accountViewModel.delete(note) onDismiss() } } else { - M3ActionRow(icon = Icons.Outlined.Report, text = stringRes(R.string.block_report), isDestructive = true) { + M3ActionRow(icon = MaterialSymbols.Report, text = stringRes(R.string.block_report), isDestructive = true) { reportDialogShowing = true } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/nip22Comments/DisplayGeoHashExternalId.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/nip22Comments/DisplayGeoHashExternalId.kt index ca5b1697f..83732a7bf 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/nip22Comments/DisplayGeoHashExternalId.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/nip22Comments/DisplayGeoHashExternalId.kt @@ -24,8 +24,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.LocationOn import androidx.compose.material3.Icon import androidx.compose.material3.LocalTextStyle import androidx.compose.material3.MaterialTheme @@ -40,6 +38,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.withLink import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.Route import com.vitorpamplona.amethyst.ui.note.creators.location.LoadCityName @@ -68,7 +68,7 @@ fun DisplayGeohashExternalId( Row(modifier = MaterialTheme.colorScheme.replyModifier.padding(10.dp), verticalAlignment = Alignment.CenterVertically) { LoadCityName(geohash) { cityName -> Icon( - imageVector = Icons.Default.LocationOn, + symbol = MaterialSymbols.LocationOn, contentDescription = stringRes(id = R.string.geohash_exclusive), modifier = Modifier.size(20.dp), tint = MaterialTheme.colorScheme.primary, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/nip22Comments/DisplayHashtagExternalId.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/nip22Comments/DisplayHashtagExternalId.kt index f6d577124..4b56c8950 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/nip22Comments/DisplayHashtagExternalId.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/nip22Comments/DisplayHashtagExternalId.kt @@ -24,8 +24,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Tag import androidx.compose.material3.Icon import androidx.compose.material3.LocalTextStyle import androidx.compose.material3.MaterialTheme @@ -40,6 +38,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.withLink import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.Route import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @@ -66,7 +66,7 @@ fun DisplayHashtagExternalId( ) { Row(modifier = MaterialTheme.colorScheme.replyModifier.padding(10.dp), verticalAlignment = Alignment.CenterVertically) { Icon( - imageVector = Icons.Default.Tag, + symbol = MaterialSymbols.Tag, contentDescription = stringRes(id = R.string.hashtag_exclusive), modifier = Modifier.size(20.dp), tint = MaterialTheme.colorScheme.primary, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Attestation.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Attestation.kt index 840063060..e3646b1ca 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Attestation.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Attestation.kt @@ -33,15 +33,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.Send -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.Close -import androidx.compose.material.icons.filled.ErrorOutline -import androidx.compose.material.icons.filled.HourglassTop -import androidx.compose.material.icons.filled.Recommend -import androidx.compose.material.icons.filled.RemoveDone -import androidx.compose.material.icons.filled.Star import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -54,12 +45,14 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.EmptyTagList import com.vitorpamplona.amethyst.commons.model.toImmutableListOfLists import com.vitorpamplona.amethyst.model.LocalCache @@ -182,7 +175,7 @@ fun RenderAttestation( horizontalArrangement = Arrangement.spacedBy(8.dp), ) { Icon( - imageVector = statusIcon, + symbol = statusIcon, contentDescription = stringRes(R.string.attestation), tint = statusColor, modifier = Modifier.size(24.dp), @@ -308,7 +301,7 @@ fun RenderAttestationRequest( horizontalArrangement = Arrangement.spacedBy(8.dp), ) { Icon( - imageVector = Icons.AutoMirrored.Filled.Send, + symbol = MaterialSymbols.AutoMirrored.Send, contentDescription = stringRes(R.string.attestation_request), tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(24.dp), @@ -435,7 +428,7 @@ fun RenderAttestorRecommendation( horizontalArrangement = Arrangement.spacedBy(8.dp), ) { Icon( - imageVector = Icons.Default.Recommend, + symbol = MaterialSymbols.Recommend, contentDescription = stringRes(R.string.attestor_recommendation), tint = MaterialTheme.colorScheme.tertiary, modifier = Modifier.size(24.dp), @@ -527,7 +520,7 @@ fun RenderAttestorProficiency( horizontalArrangement = Arrangement.spacedBy(8.dp), ) { Icon( - imageVector = Icons.Default.Star, + symbol = MaterialSymbols.Star, contentDescription = stringRes(R.string.attestor_proficiency), tint = MaterialTheme.colorScheme.secondary, modifier = Modifier.size(24.dp), @@ -585,13 +578,13 @@ private fun attestationColor(status: AttestationStatus?): Color = else -> Color(0xFF757575) } -private fun attestationIcon(status: AttestationStatus?): ImageVector = +private fun attestationIcon(status: AttestationStatus?): MaterialSymbol = when { - status == AttestationStatus.INVALID -> Icons.Default.Close - status == AttestationStatus.VALID -> Icons.Default.CheckCircle - status == AttestationStatus.REVOKED -> Icons.Default.RemoveDone - status == AttestationStatus.VERIFYING -> Icons.Default.HourglassTop - else -> Icons.Default.ErrorOutline + status == AttestationStatus.INVALID -> MaterialSymbols.Close + status == AttestationStatus.VALID -> MaterialSymbols.CheckCircle + status == AttestationStatus.REVOKED -> MaterialSymbols.RemoveDone + status == AttestationStatus.VERIFYING -> MaterialSymbols.HourglassTop + else -> MaterialSymbols.ErrorOutline } @Composable diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Badge.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Badge.kt index 509c82511..ab757dad1 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Badge.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Badge.kt @@ -33,8 +33,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.MilitaryTech import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -61,6 +59,8 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil3.compose.AsyncImage import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.User @@ -118,7 +118,7 @@ fun BadgeDisplay( }, ) { Icon( - imageVector = Icons.Outlined.MilitaryTech, + symbol = MaterialSymbols.MilitaryTech, contentDescription = null, modifier = Modifier.size(18.dp), ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/CommunityHeader.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/CommunityHeader.kt index f61ddf1df..d99dc4185 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/CommunityHeader.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/CommunityHeader.kt @@ -32,9 +32,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Share -import androidx.compose.material.icons.outlined.Edit import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.FilledTonalButton @@ -60,6 +57,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.EmptyTagList import com.vitorpamplona.amethyst.commons.model.toImmutableListOfLists import com.vitorpamplona.amethyst.model.AddressableNote @@ -462,7 +461,7 @@ fun EditCommunityButton( onClick = { nav.nav(Route.EditCommunity(note.address)) }, ) { Icon( - imageVector = Icons.Outlined.Edit, + symbol = MaterialSymbols.Edit, modifier = Size18Modifier, contentDescription = stringRes(R.string.edit_community), ) @@ -543,7 +542,7 @@ fun ShareCommunityButton( }, ) { Icon( - imageVector = Icons.Default.Share, + symbol = MaterialSymbols.Share, modifier = Size18Modifier, contentDescription = stringRes(R.string.quick_action_share), ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/LongForm.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/LongForm.kt index b6a31c82b..f4e6c5107 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/LongForm.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/LongForm.kt @@ -34,8 +34,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Schedule import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -49,6 +47,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.ui.components.MyAsyncImage import com.vitorpamplona.amethyst.ui.navigation.navs.INav @@ -237,7 +237,7 @@ private fun MetaSeparator() { private fun ReadingTimeBadge(minutes: Int) { Row(verticalAlignment = Alignment.CenterVertically) { Icon( - imageVector = Icons.Outlined.Schedule, + symbol = MaterialSymbols.Schedule, contentDescription = null, tint = MaterialTheme.colorScheme.grayText, modifier = Modifier.size(14.dp), diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/RelayDiscovery.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/RelayDiscovery.kt index e1b24815a..c3cbbeaa0 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/RelayDiscovery.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/RelayDiscovery.kt @@ -31,14 +31,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Dns -import androidx.compose.material.icons.filled.Language -import androidx.compose.material.icons.filled.Lock -import androidx.compose.material.icons.filled.LockOpen -import androidx.compose.material.icons.filled.Numbers -import androidx.compose.material.icons.filled.Tag -import androidx.compose.material.icons.filled.TravelExplore import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface @@ -48,13 +40,15 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @@ -121,7 +115,7 @@ fun RenderRelayDiscovery( // Network type if (networkTypes.isNotEmpty()) { DiscoveryInfoRow( - icon = Icons.Default.Language, + icon = MaterialSymbols.Language, label = stringRes(R.string.relay_monitor_network), value = networkTypes.joinToString { it.code }, ) @@ -130,7 +124,7 @@ fun RenderRelayDiscovery( // Relay type if (relayTypes.isNotEmpty()) { DiscoveryInfoRow( - icon = Icons.Default.Dns, + icon = MaterialSymbols.Dns, label = stringRes(R.string.relay_monitor_relay_type), value = relayTypes.joinToString(), ) @@ -139,7 +133,7 @@ fun RenderRelayDiscovery( // Requirements if (requirements.isNotEmpty()) { DiscoveryInfoRow( - icon = if (requirements.any { !it.negated }) Icons.Default.Lock else Icons.Default.LockOpen, + icon = if (requirements.any { !it.negated }) MaterialSymbols.Lock else MaterialSymbols.LockOpen, label = stringRes(R.string.relay_monitor_requirements), value = requirements.joinToString { req -> @@ -151,7 +145,7 @@ fun RenderRelayDiscovery( // Supported NIPs if (supportedNips.isNotEmpty()) { DiscoveryInfoRow( - icon = Icons.Default.Numbers, + icon = MaterialSymbols.Numbers, label = stringRes(R.string.relay_monitor_supported_nips), value = supportedNips.sorted().joinToString(), ) @@ -160,7 +154,7 @@ fun RenderRelayDiscovery( // Accepted kinds if (acceptedKinds.isNotEmpty()) { DiscoveryInfoRow( - icon = Icons.Default.Dns, + icon = MaterialSymbols.Dns, label = stringRes(R.string.relay_discovery_accepted_kinds), value = acceptedKinds.joinToString { kind -> @@ -176,7 +170,7 @@ fun RenderRelayDiscovery( verticalAlignment = Alignment.CenterVertically, ) { Icon( - Icons.Default.Tag, + MaterialSymbols.Tag, contentDescription = null, modifier = Modifier.size(18.dp), tint = MaterialTheme.colorScheme.secondary, @@ -196,7 +190,7 @@ fun RenderRelayDiscovery( // Geohashes if (geohashes.isNotEmpty()) { DiscoveryInfoRow( - icon = Icons.Default.TravelExplore, + icon = MaterialSymbols.TravelExplore, label = stringRes(R.string.relay_discovery_geohash), value = geohashes.joinToString(), ) @@ -264,7 +258,7 @@ private fun TopicChip(topic: String) { @Composable private fun DiscoveryInfoRow( - icon: ImageVector, + icon: MaterialSymbol, label: String, value: String, ) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/RelayMembers.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/RelayMembers.kt index 86287e585..bf3aecd8f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/RelayMembers.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/RelayMembers.kt @@ -26,11 +26,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ExitToApp -import androidx.compose.material.icons.filled.People -import androidx.compose.material.icons.filled.PersonAdd -import androidx.compose.material.icons.filled.PersonRemove import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -38,11 +33,13 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @@ -62,7 +59,7 @@ fun RenderRelayMembershipList( val memberCount = remember(noteEvent) { noteEvent.members().size } RelayMemberEventCard( - icon = Icons.Default.People, + icon = MaterialSymbols.People, title = stringRes(R.string.relay_membership_list), subtitle = stringRes(R.string.relay_members_count, memberCount), nav = nav, @@ -87,7 +84,7 @@ fun RenderRelayAddMember( val subtitle = remember(memberKeys) { memberKeys.joinToString(", ") { it.take(16) + "..." } } RelayMemberEventCard( - icon = Icons.Default.PersonAdd, + icon = MaterialSymbols.PersonAdd, title = title, subtitle = subtitle, relayPubKey = noteEvent.pubKey, @@ -111,7 +108,7 @@ fun RenderRelayRemoveMember( val subtitle = remember(memberKeys) { memberKeys.joinToString(", ") { it.take(16) + "..." } } RelayMemberEventCard( - icon = Icons.Default.PersonRemove, + icon = MaterialSymbols.PersonRemove, title = title, subtitle = subtitle, relayPubKey = noteEvent.pubKey, @@ -125,7 +122,7 @@ fun RenderRelayJoinRequest( nav: INav, ) { RelayMemberEventCard( - icon = Icons.Default.PersonAdd, + icon = MaterialSymbols.PersonAdd, title = stringRes(R.string.relay_join_request), subtitle = null, nav = nav, @@ -140,7 +137,7 @@ fun RenderRelayLeaveRequest( nav: INav, ) { RelayMemberEventCard( - icon = Icons.AutoMirrored.Filled.ExitToApp, + icon = MaterialSymbols.AutoMirrored.ExitToApp, title = stringRes(R.string.relay_leave_request), subtitle = null, nav = nav, @@ -150,7 +147,7 @@ fun RenderRelayLeaveRequest( @Composable private fun RelayMemberEventCard( - icon: ImageVector, + icon: MaterialSymbol, title: String, subtitle: String?, nav: INav? = null, @@ -167,7 +164,7 @@ private fun RelayMemberEventCard( horizontalArrangement = Arrangement.spacedBy(8.dp), ) { Icon( - imageVector = icon, + symbol = icon, contentDescription = null, modifier = Modifier.size(24.dp), tint = MaterialTheme.colorScheme.primary, @@ -195,7 +192,7 @@ private fun RelayMemberEventCard( private fun RelayMembershipListCardPreview() { ThemeComparisonColumn { RelayMemberEventCard( - icon = Icons.Default.People, + icon = MaterialSymbols.People, title = "Relay membership list", subtitle = "42 members", ) @@ -207,7 +204,7 @@ private fun RelayMembershipListCardPreview() { private fun RelayAddMemberCardPreview() { ThemeComparisonColumn { RelayMemberEventCard( - icon = Icons.Default.PersonAdd, + icon = MaterialSymbols.PersonAdd, title = "Member added to relay", subtitle = "a1b2c3d4e5f6a7b8...", ) @@ -219,7 +216,7 @@ private fun RelayAddMemberCardPreview() { private fun RelayRemoveMemberCardPreview() { ThemeComparisonColumn { RelayMemberEventCard( - icon = Icons.Default.PersonRemove, + icon = MaterialSymbols.PersonRemove, title = "Member removed from relay", subtitle = "a1b2c3d4e5f6a7b8...", ) @@ -231,7 +228,7 @@ private fun RelayRemoveMemberCardPreview() { private fun RelayJoinRequestCardPreview() { ThemeComparisonColumn { RelayMemberEventCard( - icon = Icons.Default.PersonAdd, + icon = MaterialSymbols.PersonAdd, title = "Relay join request", subtitle = null, ) @@ -243,7 +240,7 @@ private fun RelayJoinRequestCardPreview() { private fun RelayLeaveRequestCardPreview() { ThemeComparisonColumn { RelayMemberEventCard( - icon = Icons.AutoMirrored.Filled.ExitToApp, + icon = MaterialSymbols.AutoMirrored.ExitToApp, title = "Relay leave request", subtitle = null, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/TorrentComment.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/TorrentComment.kt index a0fd3a87b..004250ae9 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/TorrentComment.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/TorrentComment.kt @@ -28,8 +28,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.FileOpen import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -46,6 +44,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.service.countToHumanReadableBytes @@ -249,7 +249,7 @@ fun ShortTorrentHeader( modifier = modifier, ) { Icon( - imageVector = Icons.Outlined.FileOpen, + symbol = MaterialSymbols.FileOpen, contentDescription = stringRes(id = R.string.torrent_file), modifier = Modifier.size(20.dp), ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/VoiceTrack.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/VoiceTrack.kt index 9c910c06e..cc7e4dd77 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/VoiceTrack.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/VoiceTrack.kt @@ -28,9 +28,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.PauseCircleOutline -import androidx.compose.material.icons.filled.PlayCircleOutline import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -51,6 +48,8 @@ import androidx.media3.ui.compose.ContentFrame import androidx.media3.ui.compose.SURFACE_TYPE_TEXTURE_VIEW import androidx.media3.ui.compose.state.rememberPlayPauseButtonState import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.richtext.MediaUrlVideo import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.service.playback.composable.DEFAULT_MUTED_SETTING @@ -252,7 +251,7 @@ fun PlayPauseButton(controllerState: MediaControllerState) { modifier = Size75Modifier, ) { Icon( - imageVector = if (state.showPlay) Icons.Default.PlayCircleOutline else Icons.Default.PauseCircleOutline, + symbol = if (state.showPlay) MaterialSymbols.PlayCircleOutline else MaterialSymbols.PauseCircleOutline, contentDescription = if (state.showPlay) stringResource(R.string.play) else stringResource(R.string.pause), modifier = Size50Modifier, tint = Color.White, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/ZapEvent.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/ZapEvent.kt index 11ba6a898..4c9920577 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/ZapEvent.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/ZapEvent.kt @@ -23,8 +23,6 @@ package com.vitorpamplona.amethyst.ui.note.types import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.outlined.ArrowForwardIos import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -38,6 +36,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.User @@ -167,7 +167,7 @@ fun TransferCard( ) Icon( - imageVector = Icons.AutoMirrored.Outlined.ArrowForwardIos, + symbol = MaterialSymbols.AutoMirrored.ArrowForwardIos, contentDescription = null, tint = MaterialTheme.colorScheme.bitcoinColor, modifier = Size20Modifier, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/articles/NewArticleButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/articles/NewArticleButton.kt index f03d02f21..f0b02c243 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/articles/NewArticleButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/articles/NewArticleButton.kt @@ -21,14 +21,14 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.articles import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Add import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.Route import com.vitorpamplona.amethyst.ui.stringRes @@ -44,7 +44,7 @@ fun NewArticleButton(nav: INav) { containerColor = MaterialTheme.colorScheme.primary, ) { Icon( - imageVector = Icons.Outlined.Add, + symbol = MaterialSymbols.Add, contentDescription = stringRes(id = R.string.new_long_form_post), modifier = Size26Modifier, tint = Color.White, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/audiorooms/room/AudioRoomStage.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/audiorooms/room/AudioRoomStage.kt index 048dee14e..1dfc75776 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/audiorooms/room/AudioRoomStage.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/audiorooms/room/AudioRoomStage.kt @@ -28,9 +28,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.PanTool -import androidx.compose.material.icons.outlined.PanTool import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.FilledTonalIconButton @@ -50,6 +47,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.nip53LiveActivities.LiveActivitiesChannel import com.vitorpamplona.amethyst.ui.note.ClickableUserPicture import com.vitorpamplona.amethyst.ui.note.LoadAddressableNote @@ -181,7 +180,7 @@ private fun AudioRoomStageContent( ) { FilledTonalIconButton(onClick = { handRaised = !handRaised }) { Icon( - imageVector = if (handRaised) Icons.Filled.PanTool else Icons.Outlined.PanTool, + symbol = if (handRaised) MaterialSymbols.PanTool else MaterialSymbols.PanTool, contentDescription = stringRes( if (handRaised) R.string.audio_room_lower_hand else R.string.audio_room_raise_hand, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/badges/post/NewBadgeDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/badges/post/NewBadgeDialog.kt index 6f3a40f90..f4a32e4c9 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/badges/post/NewBadgeDialog.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/badges/post/NewBadgeDialog.kt @@ -38,8 +38,6 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AddPhotoAlternate import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -67,6 +65,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.actions.StrippingFailureDialog import com.vitorpamplona.amethyst.ui.actions.mediaServers.DEFAULT_MEDIA_SERVERS import com.vitorpamplona.amethyst.ui.actions.uploads.GallerySelect @@ -216,7 +216,7 @@ private fun UploadPlaceholder(onClick: () -> Unit) { ) { Column(horizontalAlignment = Alignment.CenterHorizontally) { Icon( - imageVector = Icons.Default.AddPhotoAlternate, + symbol = MaterialSymbols.AddPhotoAlternate, contentDescription = null, modifier = Modifier.size(56.dp), tint = MaterialTheme.colorScheme.primary, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/BookmarkGroupItemOptions.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/BookmarkGroupItemOptions.kt index d71f5cb30..667f91fe7 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/BookmarkGroupItemOptions.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/BookmarkGroupItemOptions.kt @@ -21,19 +21,6 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.bookmarkgroups.display import android.content.Intent -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.BookmarkRemove -import androidx.compose.material.icons.outlined.CellTower -import androidx.compose.material.icons.outlined.ContentCopy -import androidx.compose.material.icons.outlined.Delete -import androidx.compose.material.icons.outlined.Edit -import androidx.compose.material.icons.outlined.Lock -import androidx.compose.material.icons.outlined.LockOpen -import androidx.compose.material.icons.outlined.PersonAdd -import androidx.compose.material.icons.outlined.PersonRemove -import androidx.compose.material.icons.outlined.Report -import androidx.compose.material.icons.outlined.Schedule -import androidx.compose.material.icons.outlined.Share import androidx.compose.runtime.Composable import androidx.compose.runtime.State import androidx.compose.runtime.getValue @@ -45,6 +32,7 @@ import androidx.compose.ui.platform.LocalClipboard import androidx.compose.ui.platform.LocalContext import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.ui.actions.EditPostView import com.vitorpamplona.amethyst.ui.components.ClickableBox @@ -166,13 +154,13 @@ fun BookmarkGroupItemOptionsMenu( // Bookmark Management section M3ActionSection { M3ActionRow( - icon = if (isBookmarkItemPrivate) Icons.Outlined.LockOpen else Icons.Outlined.Lock, + icon = if (isBookmarkItemPrivate) MaterialSymbols.LockOpen else MaterialSymbols.Lock, text = stringRes(if (isBookmarkItemPrivate) R.string.move_bookmark_to_public_label else R.string.move_bookmark_to_private_label), ) { if (isBookmarkItemPrivate) onMoveBookmarkToPublic() else onMoveBookmarkToPrivate() } M3ActionRow( - icon = Icons.Outlined.BookmarkRemove, + icon = MaterialSymbols.BookmarkRemove, text = stringRes(R.string.bookmark_remove_action_label), isDestructive = true, ) { @@ -184,13 +172,13 @@ fun BookmarkGroupItemOptionsMenu( // Follow section M3ActionSection { if (!state.isFollowingAuthor) { - M3ActionRow(icon = Icons.Outlined.PersonAdd, text = stringRes(R.string.follow)) { + M3ActionRow(icon = MaterialSymbols.PersonAdd, text = stringRes(R.string.follow)) { val author = note.author ?: return@M3ActionRow accountViewModel.follow(author) onDismiss() } } else { - M3ActionRow(icon = Icons.Outlined.PersonRemove, text = stringRes(R.string.unfollow)) { + M3ActionRow(icon = MaterialSymbols.PersonRemove, text = stringRes(R.string.unfollow)) { val author = note.author ?: return@M3ActionRow accountViewModel.unfollow(author) onDismiss() @@ -200,7 +188,7 @@ fun BookmarkGroupItemOptionsMenu( // Copy & Share section M3ActionSection { - M3ActionRow(icon = Icons.Outlined.ContentCopy, text = stringRes(R.string.copy_text)) { + M3ActionRow(icon = MaterialSymbols.ContentCopy, text = stringRes(R.string.copy_text)) { val lastNoteVersion = (editState?.value as? GenericLoadable.Loaded)?.loaded?.modificationToShow?.value ?: note accountViewModel.decrypt(lastNoteVersion) { scope.launch { @@ -209,7 +197,7 @@ fun BookmarkGroupItemOptionsMenu( } onDismiss() } - M3ActionRow(icon = Icons.Outlined.ContentCopy, text = stringRes(R.string.copy_user_pubkey)) { + M3ActionRow(icon = MaterialSymbols.ContentCopy, text = stringRes(R.string.copy_user_pubkey)) { note.author?.let { scope.launch(Dispatchers.IO) { clipboardManager.setText("nostr:${it.pubkeyNpub()}") @@ -217,13 +205,13 @@ fun BookmarkGroupItemOptionsMenu( } } } - M3ActionRow(icon = Icons.Outlined.ContentCopy, text = stringRes(R.string.copy_note_id)) { + M3ActionRow(icon = MaterialSymbols.ContentCopy, text = stringRes(R.string.copy_note_id)) { scope.launch(Dispatchers.IO) { clipboardManager.setText(note.toNostrUri()) onDismiss() } } - M3ActionRow(icon = Icons.Outlined.Share, text = stringRes(R.string.quick_action_share)) { + M3ActionRow(icon = MaterialSymbols.Share, text = stringRes(R.string.quick_action_share)) { val sendIntent = Intent().apply { action = Intent.ACTION_SEND @@ -248,7 +236,7 @@ fun BookmarkGroupItemOptionsMenu( // Edit & Broadcast section M3ActionSection { if (state.isLoggedUser && note.isDraft()) { - M3ActionRow(icon = Icons.Outlined.Edit, text = stringRes(R.string.edit_draft)) { + M3ActionRow(icon = MaterialSymbols.Edit, text = stringRes(R.string.edit_draft)) { nav.nav { routeEditDraftTo(note, accountViewModel.account) } @@ -257,21 +245,21 @@ fun BookmarkGroupItemOptionsMenu( if (!note.isDraft()) { if (note.event is TextNoteEvent) { if (state.isLoggedUser) { - M3ActionRow(icon = Icons.Outlined.Edit, text = stringRes(R.string.edit_post)) { + M3ActionRow(icon = MaterialSymbols.Edit, text = stringRes(R.string.edit_post)) { wantsToEditPost.value = true } } else { - M3ActionRow(icon = Icons.Outlined.Edit, text = stringRes(R.string.propose_an_edit)) { + M3ActionRow(icon = MaterialSymbols.Edit, text = stringRes(R.string.propose_an_edit)) { wantsToEditPost.value = true } } } else if (note.event is LongTextNoteEvent && state.isLoggedUser) { - M3ActionRow(icon = Icons.Outlined.Edit, text = stringRes(R.string.edit_article)) { + M3ActionRow(icon = MaterialSymbols.Edit, text = stringRes(R.string.edit_article)) { nav.nav { Route.NewLongFormPost(version = note.idHex) } } } } - M3ActionRow(icon = Icons.Outlined.CellTower, text = stringRes(R.string.broadcast)) { + M3ActionRow(icon = MaterialSymbols.CellTower, text = stringRes(R.string.broadcast)) { accountViewModel.broadcast(note) onDismiss() } @@ -280,22 +268,22 @@ fun BookmarkGroupItemOptionsMenu( // Timestamp & Moderation section M3ActionSection { if (accountViewModel.account.otsState.hasPendingAttestations(note)) { - M3ActionRow(icon = Icons.Outlined.Schedule, text = stringRes(R.string.timestamp_pending)) { + M3ActionRow(icon = MaterialSymbols.Schedule, text = stringRes(R.string.timestamp_pending)) { onDismiss() } } else { - M3ActionRow(icon = Icons.Outlined.Schedule, text = stringRes(R.string.timestamp_it)) { + M3ActionRow(icon = MaterialSymbols.Schedule, text = stringRes(R.string.timestamp_it)) { accountViewModel.timestamp(note) onDismiss() } } if (state.isLoggedUser) { - M3ActionRow(icon = Icons.Outlined.Delete, text = stringRes(R.string.request_deletion), isDestructive = true) { + M3ActionRow(icon = MaterialSymbols.Delete, text = stringRes(R.string.request_deletion), isDestructive = true) { accountViewModel.delete(note) onDismiss() } } else { - M3ActionRow(icon = Icons.Outlined.Report, text = stringRes(R.string.block_report), isDestructive = true) { + M3ActionRow(icon = MaterialSymbols.Report, text = stringRes(R.string.block_report), isDestructive = true) { reportDialogShowing = true } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/BookmarkGroupScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/BookmarkGroupScreen.kt index c4eb079e3..cc18dfc86 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/BookmarkGroupScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/BookmarkGroupScreen.kt @@ -30,9 +30,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.pager.PagerState import androidx.compose.foundation.pager.rememberPagerState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.CellTower -import androidx.compose.material.icons.outlined.Delete import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.IconButton @@ -57,6 +54,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.AddressableNote import com.vitorpamplona.amethyst.ui.components.ClickableBox import com.vitorpamplona.amethyst.ui.components.DeletedItemsBanner @@ -383,14 +381,14 @@ fun BookmarkGroupActionsMenuButton( ) { M3ActionSection { M3ActionRow( - icon = Icons.Outlined.CellTower, + icon = MaterialSymbols.CellTower, text = stringRes(R.string.bookmark_list_broadcast_btn_label), ) { onBroadcastList() isActionListOpen.value = false } M3ActionRow( - icon = Icons.Outlined.Delete, + icon = MaterialSymbols.Delete, text = stringRes(R.string.bookmark_list_delete_btn_label), isDestructive = true, ) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/list/BookmarkGroupItem.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/list/BookmarkGroupItem.kt index eeb80529f..eca233ae4 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/list/BookmarkGroupItem.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/list/BookmarkGroupItem.kt @@ -29,13 +29,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.offset -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.outlined.Article -import androidx.compose.material.icons.outlined.CollectionsBookmark -import androidx.compose.material.icons.outlined.ContentCopy -import androidx.compose.material.icons.outlined.Delete -import androidx.compose.material.icons.outlined.Description -import androidx.compose.material.icons.outlined.Edit import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.FilledTonalButton @@ -57,6 +50,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.nip51Lists.labeledBookmarkLists.LabeledBookmarkList import com.vitorpamplona.amethyst.ui.components.ClickableBox import com.vitorpamplona.amethyst.ui.components.M3ActionDialog @@ -135,7 +130,7 @@ fun BookmarkGroupItem( horizontalAlignment = Alignment.CenterHorizontally, ) { Icon( - imageVector = Icons.Outlined.CollectionsBookmark, + symbol = MaterialSymbols.CollectionsBookmark, contentDescription = stringRes(R.string.bookmark_list_icon_label), modifier = Size40Modifier, ) @@ -186,7 +181,7 @@ private fun BookmarkGroupActions( onClick = openArticleBookmarks, ) { Icon( - imageVector = Icons.AutoMirrored.Outlined.Article, + symbol = MaterialSymbols.AutoMirrored.Article, contentDescription = null, ) Text(stringRes(R.string.bookmark_list_articles_btn_label)) @@ -233,7 +228,7 @@ fun BookmarkMembershipStatusAndNumberDisplay( horizontalArrangement = SpacedBy2dp, ) { Icon( - imageVector = Icons.AutoMirrored.Outlined.Article, + symbol = MaterialSymbols.AutoMirrored.Article, modifier = Size10Modifier, contentDescription = null, ) @@ -299,21 +294,21 @@ private fun GroupOptionsMenu( onDismiss = onDismiss, ) { M3ActionSection { - M3ActionRow(icon = Icons.Outlined.Edit, text = stringRes(R.string.follow_set_rename_btn_label)) { + M3ActionRow(icon = MaterialSymbols.Edit, text = stringRes(R.string.follow_set_rename_btn_label)) { onGroupRename() onDismiss() } - M3ActionRow(icon = Icons.Outlined.Description, text = stringRes(R.string.follow_set_desc_modify_label)) { + M3ActionRow(icon = MaterialSymbols.Description, text = stringRes(R.string.follow_set_desc_modify_label)) { onGroupDescriptionChange() onDismiss() } - M3ActionRow(icon = Icons.Outlined.ContentCopy, text = stringRes(R.string.follow_set_copy_action_btn_label)) { + M3ActionRow(icon = MaterialSymbols.ContentCopy, text = stringRes(R.string.follow_set_copy_action_btn_label)) { isCopyDialogOpen.value = true onDismiss() } } M3ActionSection { - M3ActionRow(icon = Icons.Outlined.Delete, text = stringRes(R.string.quick_action_delete), isDestructive = true) { + M3ActionRow(icon = MaterialSymbols.Delete, text = stringRes(R.string.quick_action_delete), isDestructive = true) { onDelete() onDismiss() } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/list/ListOfBookmarkGroupsFeedView.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/list/ListOfBookmarkGroupsFeedView.kt index bad0e79dc..8c13c4ac4 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/list/ListOfBookmarkGroupsFeedView.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/list/ListOfBookmarkGroupsFeedView.kt @@ -29,9 +29,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.BookmarkBorder -import androidx.compose.material.icons.outlined.PushPin import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.ListItem @@ -43,6 +40,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.nip51Lists.BookmarkListState import com.vitorpamplona.amethyst.model.nip51Lists.OldBookmarkListState import com.vitorpamplona.amethyst.model.nip51Lists.PinListState @@ -138,7 +137,7 @@ fun DefaultBookmarkList( horizontalAlignment = Alignment.CenterHorizontally, ) { Icon( - imageVector = Icons.Outlined.BookmarkBorder, + symbol = MaterialSymbols.BookmarkBorder, contentDescription = stringRes(R.string.bookmark_list_icon_label), modifier = Size40Modifier, ) @@ -182,7 +181,7 @@ fun PinnedNotesList( horizontalAlignment = Alignment.CenterHorizontally, ) { Icon( - imageVector = Icons.Outlined.PushPin, + symbol = MaterialSymbols.PushPin, contentDescription = stringRes(R.string.bookmark_list_icon_label), modifier = Size40Modifier, ) @@ -226,7 +225,7 @@ fun OldBookmarkList( horizontalAlignment = Alignment.CenterHorizontally, ) { Icon( - imageVector = Icons.Outlined.BookmarkBorder, + symbol = MaterialSymbols.BookmarkBorder, contentDescription = stringRes(R.string.bookmark_list_icon_label), modifier = Size40Modifier, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/list/ListOfBookmarkGroupsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/list/ListOfBookmarkGroupsScreen.kt index e3486cb3b..fedd86689 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/list/ListOfBookmarkGroupsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/list/ListOfBookmarkGroupsScreen.kt @@ -24,8 +24,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.PlaylistAdd import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -34,6 +32,8 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.nip51Lists.BookmarkListState import com.vitorpamplona.amethyst.model.nip51Lists.OldBookmarkListState import com.vitorpamplona.amethyst.model.nip51Lists.PinListState @@ -149,7 +149,7 @@ fun BookmarkGroupFab(onAddGroup: () -> Unit) { }, icon = { Icon( - imageVector = Icons.AutoMirrored.Filled.PlaylistAdd, + symbol = MaterialSymbols.AutoMirrored.PlaylistAdd, contentDescription = null, ) }, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/membershipManagement/BookmarkGroupManagementItem.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/membershipManagement/BookmarkGroupManagementItem.kt index a66a30be7..b01e0b29e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/membershipManagement/BookmarkGroupManagementItem.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/membershipManagement/BookmarkGroupManagementItem.kt @@ -27,14 +27,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.BookmarkAdd -import androidx.compose.material.icons.filled.BookmarkRemove -import androidx.compose.material.icons.outlined.BookmarkAdd -import androidx.compose.material.icons.outlined.CollectionsBookmark -import androidx.compose.material.icons.outlined.Lock -import androidx.compose.material.icons.outlined.Public -import androidx.compose.material.icons.outlined.RemoveCircleOutline import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.ListItem @@ -47,6 +39,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.components.M3ActionDialog import com.vitorpamplona.amethyst.ui.components.M3ActionRow import com.vitorpamplona.amethyst.ui.components.M3ActionSection @@ -88,7 +82,7 @@ fun BookmarkGroupManagementItem( horizontalAlignment = Alignment.CenterHorizontally, ) { Icon( - imageVector = Icons.Outlined.CollectionsBookmark, + symbol = MaterialSymbols.CollectionsBookmark, contentDescription = stringRes(R.string.bookmark_list_icon_label), modifier = Size50Modifier, ) @@ -131,15 +125,15 @@ fun BookmarkStatusInList( val icon = if (isPublicMemberBookmark) { - Icons.Outlined.Public + MaterialSymbols.Public } else if (isPrivateMemberBookmark) { - Icons.Outlined.Lock + MaterialSymbols.Lock } else { - Icons.Outlined.RemoveCircleOutline + MaterialSymbols.RemoveCircleOutline } Icon( - imageVector = icon, + symbol = icon, contentDescription = text, modifier = Size15Modifier, tint = MaterialTheme.colorScheme.primary, @@ -167,14 +161,14 @@ fun BookmarkManagementOptions( ) { M3ActionSection { M3ActionRow( - icon = Icons.Outlined.BookmarkAdd, + icon = MaterialSymbols.BookmarkAdd, text = stringRes(R.string.public_bookmark_add_action_label), ) { onAddBookmark(false) isBookmarkAddTapped.value = false } M3ActionRow( - icon = Icons.Outlined.Lock, + icon = MaterialSymbols.Lock, text = stringRes(R.string.private_bookmark_add_action_label), ) { onAddBookmark(true) @@ -210,13 +204,13 @@ fun BookmarkManagementOptions( ) { if (isBookmarkInList) { Icon( - imageVector = Icons.Filled.BookmarkRemove, + symbol = MaterialSymbols.BookmarkRemove, contentDescription = stringRes(R.string.bookmark_remove_action_desc), tint = MaterialTheme.colorScheme.onErrorContainer, ) } else { Icon( - imageVector = Icons.Filled.BookmarkAdd, + symbol = MaterialSymbols.BookmarkAdd, contentDescription = stringRes(R.string.bookmark_add_action_desc), tint = MaterialTheme.colorScheme.onPrimary, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/old/OldBookmarkListScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/old/OldBookmarkListScreen.kt index e80abeca4..e5f772d8c 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/old/OldBookmarkListScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/old/OldBookmarkListScreen.kt @@ -30,8 +30,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.rememberPagerState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.DriveFileMove import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -52,6 +50,8 @@ import androidx.compose.ui.platform.LocalContext import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.AddressableNote import com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.EventFinderQueryState import com.vitorpamplona.amethyst.ui.components.DeletedItemsBanner @@ -163,7 +163,7 @@ private fun RenderOldBookmarkScreen( text = { Text(stringRes(R.string.migrate_bookmarks_button)) }, icon = { Icon( - imageVector = Icons.AutoMirrored.Filled.DriveFileMove, + symbol = MaterialSymbols.AutoMirrored.DriveFileMove, contentDescription = stringRes(R.string.migrate_bookmarks_button), ) }, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/feed/ChatTimeAgo.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/feed/ChatTimeAgo.kt index cab7cf752..7a1d3c9ce 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/feed/ChatTimeAgo.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/feed/ChatTimeAgo.kt @@ -23,8 +23,6 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.feed import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Timer import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -35,6 +33,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.ui.note.timeAgoShort import com.vitorpamplona.amethyst.ui.note.timeAheadNoDot @@ -75,7 +75,7 @@ fun ChatDisplayExpiration(expirationDate: Long) { ) { Spacer(modifier = StdHorzSpacer) Icon( - imageVector = Icons.Outlined.Timer, + symbol = MaterialSymbols.Timer, contentDescription = stringRes(R.string.expiration_date_label), modifier = Modifier.size(12.dp), tint = MaterialTheme.colorScheme.placeholderText, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/feed/layouts/ChatBubbleLayout.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/feed/layouts/ChatBubbleLayout.kt index 373487330..4c79592a3 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/feed/layouts/ChatBubbleLayout.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/feed/layouts/ChatBubbleLayout.kt @@ -31,8 +31,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Person import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface @@ -50,6 +48,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.compositeOver import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.theme.ChatBubbleMaxSizeModifier import com.vitorpamplona.amethyst.ui.theme.ChatBubbleShapeMe import com.vitorpamplona.amethyst.ui.theme.ChatBubbleShapeThem @@ -218,7 +218,7 @@ private fun BubblePreview() { UserDisplayNameLayout( picture = { Icon( - imageVector = Icons.Default.Person, + symbol = MaterialSymbols.Person, contentDescription = null, modifier = Modifier @@ -253,7 +253,7 @@ private fun BubblePreview() { UserDisplayNameLayout( picture = { Icon( - imageVector = Icons.Default.Person, + symbol = MaterialSymbols.Person, contentDescription = null, modifier = Modifier @@ -287,7 +287,7 @@ private fun BubblePreview() { UserDisplayNameLayout( picture = { Icon( - imageVector = Icons.Default.Person, + symbol = MaterialSymbols.Person, contentDescription = null, modifier = Modifier @@ -321,7 +321,7 @@ private fun BubblePreview() { UserDisplayNameLayout( picture = { Icon( - imageVector = Icons.Default.Person, + symbol = MaterialSymbols.Person, contentDescription = null, modifier = Modifier diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/feed/types/RenderChatRaid.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/feed/types/RenderChatRaid.kt index 5838ff092..25e099833 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/feed/types/RenderChatRaid.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/feed/types/RenderChatRaid.kt @@ -25,8 +25,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.outlined.ArrowForwardIos import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -40,6 +38,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.commons.compose.nip53LiveActivities.StreamSystemCard +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.Route @@ -129,7 +129,7 @@ fun RenderChatRaid( } Icon( - imageVector = Icons.AutoMirrored.Outlined.ArrowForwardIos, + symbol = MaterialSymbols.AutoMirrored.ArrowForwardIos, contentDescription = null, tint = accent, modifier = Size20Modifier, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/marmotGroup/MarmotGroupChatScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/marmotGroup/MarmotGroupChatScreen.kt index 334cd7a35..58f1bf05d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/marmotGroup/MarmotGroupChatScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/marmotGroup/MarmotGroupChatScreen.kt @@ -23,9 +23,6 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.marmotGroup import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.filled.GroupAdd import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -37,6 +34,8 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.layouts.DisappearingScaffold import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.Route @@ -64,7 +63,7 @@ fun MarmotGroupChatScreen( navigationIcon = { IconButton(onClick = { nav.popBack() }) { Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, + symbol = MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = "Back", ) } @@ -88,7 +87,7 @@ fun MarmotGroupChatScreen( actions = { IconButton(onClick = { nav.nav(Route.MarmotGroupInfo(nostrGroupId)) }) { Icon( - imageVector = Icons.Default.GroupAdd, + symbol = MaterialSymbols.GroupAdd, contentDescription = "Add Member", ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/marmotGroup/MarmotGroupInfoScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/marmotGroup/MarmotGroupInfoScreen.kt index 46da171b5..db85acec2 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/marmotGroup/MarmotGroupInfoScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/marmotGroup/MarmotGroupInfoScreen.kt @@ -40,14 +40,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.automirrored.filled.ExitToApp -import androidx.compose.material.icons.filled.Edit -import androidx.compose.material.icons.filled.PersonAdd -import androidx.compose.material.icons.filled.PersonRemove -import androidx.compose.material.icons.filled.Star -import androidx.compose.material.icons.outlined.StarBorder import androidx.compose.material3.AlertDialog import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider @@ -75,6 +67,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.marmot.GroupMemberInfo import com.vitorpamplona.amethyst.model.nip11RelayInfo.loadRelayInfo import com.vitorpamplona.amethyst.ui.components.util.setText @@ -142,7 +136,7 @@ fun MarmotGroupInfoScreen( navigationIcon = { IconButton(onClick = { nav.popBack() }) { Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, + symbol = MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = "Back", ) } @@ -151,7 +145,7 @@ fun MarmotGroupInfoScreen( actions = { IconButton(onClick = { nav.nav(Route.MarmotGroupEditInfo(nostrGroupId)) }) { Icon( - imageVector = Icons.Default.Edit, + symbol = MaterialSymbols.Edit, contentDescription = "Edit Group Info", ) } @@ -160,7 +154,7 @@ fun MarmotGroupInfoScreen( enabled = !isLeaving, ) { Icon( - imageVector = Icons.AutoMirrored.Filled.ExitToApp, + symbol = MaterialSymbols.AutoMirrored.ExitToApp, contentDescription = "Leave Group", tint = MaterialTheme.colorScheme.error, ) @@ -455,7 +449,7 @@ private fun AddMemberInline( trailingContent = { user -> IconButton(onClick = { onAdd(user) }) { Icon( - imageVector = Icons.Default.PersonAdd, + symbol = MaterialSymbols.PersonAdd, contentDescription = "Add to group", tint = MaterialTheme.colorScheme.primary, ) @@ -543,7 +537,7 @@ fun MemberRow( if (canPromote) { IconButton(onClick = onPromoteClick) { Icon( - imageVector = Icons.Outlined.StarBorder, + symbol = MaterialSymbols.StarBorder, contentDescription = "Grant admin privileges", tint = MaterialTheme.colorScheme.primary, ) @@ -551,7 +545,7 @@ fun MemberRow( } else if (canDemote) { IconButton(onClick = onDemoteClick) { Icon( - imageVector = Icons.Default.Star, + symbol = MaterialSymbols.Star, contentDescription = "Revoke admin privileges", tint = MaterialTheme.colorScheme.primary, ) @@ -560,7 +554,7 @@ fun MemberRow( if (canRemove) { IconButton(onClick = onRemoveClick) { Icon( - imageVector = Icons.Default.PersonRemove, + symbol = MaterialSymbols.PersonRemove, contentDescription = "Remove Member", tint = MaterialTheme.colorScheme.error, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/marmotGroup/MarmotGroupListScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/marmotGroup/MarmotGroupListScreen.kt index cbcd0d9ba..efe0085ed 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/marmotGroup/MarmotGroupListScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/marmotGroup/MarmotGroupListScreen.kt @@ -33,9 +33,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.filled.Add import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.HorizontalDivider @@ -62,6 +59,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.marmotGroups.MarmotGroupChatroom import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.Route @@ -107,7 +106,7 @@ fun MarmotGroupListScreen( navigationIcon = { IconButton(onClick = { nav.popBack() }) { Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, + symbol = MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = "Back", ) } @@ -117,7 +116,7 @@ fun MarmotGroupListScreen( }, floatingActionButton = { FloatingActionButton(onClick = { nav.nav(Route.CreateMarmotGroup) }, shape = CircleShape) { - Icon(Icons.Default.Add, contentDescription = "Create Group") + Icon(MaterialSymbols.Add, contentDescription = "Create Group") } }, ) { padding -> diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/header/RenderRoomTopBar.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/header/RenderRoomTopBar.kt index 6bd478aab..6c4d22e10 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/header/RenderRoomTopBar.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/header/RenderRoomTopBar.kt @@ -30,10 +30,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Call -import androidx.compose.material.icons.filled.EditNote -import androidx.compose.material.icons.filled.Videocam import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon @@ -52,6 +48,8 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.topbars.TopBarExtensibleWithBackButton import com.vitorpamplona.amethyst.ui.note.ClickableUserPicture @@ -98,7 +96,7 @@ fun RenderRoomTopBar( modifier = Modifier.size(40.dp), ) { Icon( - imageVector = Icons.Default.Videocam, + symbol = MaterialSymbols.Videocam, contentDescription = stringRes(R.string.call_video), tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(20.dp), @@ -112,7 +110,7 @@ fun RenderRoomTopBar( modifier = Modifier.size(40.dp), ) { Icon( - imageVector = Icons.Default.Call, + symbol = MaterialSymbols.Call, contentDescription = stringRes(R.string.call_voice), tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(20.dp), @@ -153,7 +151,7 @@ fun RenderRoomTopBar( modifier = Modifier.size(40.dp), ) { Icon( - imageVector = Icons.Default.Videocam, + symbol = MaterialSymbols.Videocam, contentDescription = stringRes(R.string.call_video), tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(20.dp), @@ -167,7 +165,7 @@ fun RenderRoomTopBar( modifier = Modifier.size(40.dp), ) { Icon( - imageVector = Icons.Default.Call, + symbol = MaterialSymbols.Call, contentDescription = stringRes(R.string.call_voice), tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(20.dp), @@ -252,7 +250,7 @@ private fun EditRoomSubjectButton( contentPadding = ZeroPadding, ) { Icon( - imageVector = Icons.Default.EditNote, + symbol = MaterialSymbols.EditNote, contentDescription = stringRes(R.string.edits_the_channel_metadata), ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/send/NewGroupDMScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/send/NewGroupDMScreen.kt index 7b4598158..25a580dbd 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/send/NewGroupDMScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/send/NewGroupDMScreen.kt @@ -39,10 +39,6 @@ import androidx.compose.foundation.lazy.items import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.input.setTextAndPlaceCursorAtEnd import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AddPhotoAlternate -import androidx.compose.material.icons.filled.Videocam -import androidx.compose.material.icons.outlined.CameraAlt import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon @@ -74,6 +70,8 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.Amethyst import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.richtext.BaseMediaContent import com.vitorpamplona.amethyst.commons.richtext.EncryptedMediaUrlImage import com.vitorpamplona.amethyst.commons.richtext.EncryptedMediaUrlVideo @@ -424,7 +422,7 @@ private fun BottomRowActions( onClick = { accountViewModel.toastManager.toast(R.string.messages_cant_upload_title, R.string.messages_cant_upload_explainer) }, ) { Icon( - imageVector = Icons.Default.AddPhotoAlternate, + symbol = MaterialSymbols.AddPhotoAlternate, contentDescription = stringRes(id = R.string.upload_image), modifier = Modifier.height(25.dp), tint = MaterialTheme.colorScheme.placeholderText, @@ -443,7 +441,7 @@ private fun BottomRowActions( }, ) { Icon( - imageVector = Icons.Outlined.CameraAlt, + symbol = MaterialSymbols.CameraAlt, contentDescription = stringRes(id = R.string.take_a_picture), modifier = Modifier.height(22.dp), tint = MaterialTheme.colorScheme.placeholderText, @@ -462,7 +460,7 @@ private fun BottomRowActions( }, ) { Icon( - imageVector = Icons.Default.Videocam, + symbol = MaterialSymbols.Videocam, contentDescription = stringRes(id = R.string.record_a_video), modifier = Modifier.height(22.dp), tint = MaterialTheme.colorScheme.placeholderText, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/nip28PublicChat/header/actions/EditChatButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/nip28PublicChat/header/actions/EditChatButton.kt index d7a7ee26e..2e61c1727 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/nip28PublicChat/header/actions/EditChatButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/nip28PublicChat/header/actions/EditChatButton.kt @@ -22,14 +22,14 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.publicChannels.nip28 import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.EditNote import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.Icon import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatChannel import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.Route @@ -52,7 +52,7 @@ fun EditButton( contentPadding = ZeroPadding, ) { Icon( - imageVector = Icons.Default.EditNote, + symbol = MaterialSymbols.EditNote, contentDescription = stringRes(R.string.edits_the_channel_metadata), ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/nip28PublicChat/header/actions/LinkChatButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/nip28PublicChat/header/actions/LinkChatButton.kt index c7ea2aa1e..f53f8b618 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/nip28PublicChat/header/actions/LinkChatButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/nip28PublicChat/header/actions/LinkChatButton.kt @@ -23,8 +23,6 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.publicChannels.nip28 import android.content.Intent import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ContentCopy import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.Icon import androidx.compose.runtime.Composable @@ -33,6 +31,8 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import androidx.core.net.toUri import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatChannel import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @@ -78,7 +78,7 @@ fun LinkChatButton( contentPadding = ZeroPadding, ) { Icon( - imageVector = Icons.Default.ContentCopy, + symbol = MaterialSymbols.ContentCopy, contentDescription = stringRes(R.string.quick_action_copy_note_id), modifier = Size20Modifier, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/nip28PublicChat/header/actions/OpenChatButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/nip28PublicChat/header/actions/OpenChatButton.kt index d7c6e33ce..b7be7d335 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/nip28PublicChat/header/actions/OpenChatButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/nip28PublicChat/header/actions/OpenChatButton.kt @@ -23,8 +23,6 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.publicChannels.nip28 import android.content.Intent import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.OpenInNew import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.Icon import androidx.compose.runtime.Composable @@ -33,6 +31,8 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import androidx.core.net.toUri import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatChannel import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @@ -62,7 +62,7 @@ fun OpenChatButton( contentPadding = ZeroPadding, ) { Icon( - imageVector = Icons.AutoMirrored.Filled.OpenInNew, + symbol = MaterialSymbols.AutoMirrored.OpenInNew, contentDescription = stringRes(R.string.quick_actions_open_in_another_app), modifier = Size20Modifier, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/nip28PublicChat/header/actions/ShareChatButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/nip28PublicChat/header/actions/ShareChatButton.kt index 2a4a40886..7484b4ce0 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/nip28PublicChat/header/actions/ShareChatButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/nip28PublicChat/header/actions/ShareChatButton.kt @@ -23,8 +23,6 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.publicChannels.nip28 import android.content.Intent import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Share import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.Icon import androidx.compose.runtime.Composable @@ -32,6 +30,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatChannel import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.note.njumpLink @@ -73,7 +73,7 @@ fun ShareChatButton( contentPadding = ZeroPadding, ) { Icon( - imageVector = Icons.Default.Share, + symbol = MaterialSymbols.Share, contentDescription = stringRes(R.string.quick_action_share), modifier = Size20Modifier, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/ChannelFabColumn.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/ChannelFabColumn.kt index 8618fe5ec..a3514efe9 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/ChannelFabColumn.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/ChannelFabColumn.kt @@ -31,8 +31,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Add import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -48,6 +46,8 @@ import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.Route import com.vitorpamplona.amethyst.ui.navigation.routes.Route.NewGroupDM @@ -136,7 +136,7 @@ fun ChannelFabColumn(nav: INav) { containerColor = MaterialTheme.colorScheme.primary, ) { Icon( - imageVector = Icons.Outlined.Add, + symbol = MaterialSymbols.Add, contentDescription = stringRes(R.string.messages_create_public_private_chat_description), modifier = Modifier.size(26.dp).graphicsLayer { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/feed/ChatroomListTabs.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/feed/ChatroomListTabs.kt index 45b1e8583..d22094dfa 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/feed/ChatroomListTabs.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/rooms/feed/ChatroomListTabs.kt @@ -25,11 +25,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.size import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.PagerState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.MoreVert -import androidx.compose.material.icons.outlined.DoneAll -import androidx.compose.material.icons.outlined.Groups -import androidx.compose.material.icons.outlined.MoveToInbox import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -46,6 +41,8 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.ui.feeds.FeedContentState import com.vitorpamplona.amethyst.ui.components.M3ActionDialog import com.vitorpamplona.amethyst.ui.components.M3ActionRow @@ -101,7 +98,7 @@ fun MessagesTabHeader( onClick = { moreActionsExpanded = true }, ) { Icon( - imageVector = Icons.Default.MoreVert, + symbol = MaterialSymbols.MoreVert, contentDescription = stringRes(id = R.string.more_options), tint = MaterialTheme.colorScheme.placeholderText, ) @@ -154,21 +151,21 @@ fun MessagesMarkAsReadDialog( ) { M3ActionSection { M3ActionRow( - icon = Icons.Outlined.Groups, + icon = MaterialSymbols.Groups, text = stringRes(R.string.mark_all_known_as_read), ) { onMarkKnownAsRead() onDismiss() } M3ActionRow( - icon = Icons.Outlined.MoveToInbox, + icon = MaterialSymbols.MoveToInbox, text = stringRes(R.string.mark_all_new_as_read), ) { onMarkNewAsRead() onDismiss() } M3ActionRow( - icon = Icons.Outlined.DoneAll, + icon = MaterialSymbols.DoneAll, text = stringRes(R.string.mark_all_as_read), ) { onMarkKnownAsRead() diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/utils/DisplayReplyingToNote.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/utils/DisplayReplyingToNote.kt index f8c4e556f..293442a68 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/utils/DisplayReplyingToNote.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/utils/DisplayReplyingToNote.kt @@ -27,8 +27,6 @@ import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Cancel import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -36,6 +34,8 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @@ -76,7 +76,7 @@ fun DisplayReplyingToNote( onClick = onCancel, ) { Icon( - imageVector = Icons.Default.Cancel, + symbol = MaterialSymbols.Cancel, null, modifier = Size20Modifier, tint = MaterialTheme.colorScheme.placeholderText, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/utils/ThinSendButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/utils/ThinSendButton.kt index b2d2c9345..1d9667be1 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/utils/ThinSendButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/utils/ThinSendButton.kt @@ -20,13 +20,13 @@ */ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.utils -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.Send import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.Size20Modifier @@ -42,7 +42,7 @@ fun ThinSendButton( onClick = onClick, ) { Icon( - imageVector = Icons.AutoMirrored.Filled.Send, + symbol = MaterialSymbols.AutoMirrored.Send, contentDescription = stringRes(id = R.string.accessibility_send), modifier = Size20Modifier, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/ChessGameScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/ChessGameScreen.kt index dd71450ee..d39809222 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/ChessGameScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/ChessGameScreen.kt @@ -33,11 +33,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.Circle -import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api @@ -69,6 +64,8 @@ import com.vitorpamplona.amethyst.commons.chess.ChessBroadcastBanner import com.vitorpamplona.amethyst.commons.chess.ChessBroadcastStatus import com.vitorpamplona.amethyst.commons.chess.ChessSyncBanner import com.vitorpamplona.amethyst.commons.chess.LiveChessGameScreen +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.Route import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @@ -190,7 +187,7 @@ fun ChessGameScreen( navigationIcon = { IconButton(onClick = { nav.popBack() }) { Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, + symbol = MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = stringRes(R.string.back), ) } @@ -198,7 +195,7 @@ fun ChessGameScreen( actions = { IconButton(onClick = { showRelaySettings = true }) { Icon( - imageVector = Icons.Default.Settings, + symbol = MaterialSymbols.Settings, contentDescription = stringRes(R.string.relay_settings), ) } @@ -290,7 +287,7 @@ fun ChessGameScreen( nav.popBack() }) { Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, + symbol = MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = stringRes(R.string.back), modifier = Modifier.padding(end = 8.dp), ) @@ -471,7 +468,7 @@ private fun RelayItem( horizontalArrangement = Arrangement.spacedBy(12.dp), ) { Icon( - imageVector = if (isConnected) Icons.Default.CheckCircle else Icons.Default.Circle, + symbol = if (isConnected) MaterialSymbols.CheckCircle else MaterialSymbols.Circle, contentDescription = if (isConnected) "Connected" else "Disconnected", tint = if (isConnected) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.error, modifier = Modifier.size(16.dp), diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/ChessLobbyScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/ChessLobbyScreen.kt index f664a51af..4edffce35 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/ChessLobbyScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/ChessLobbyScreen.kt @@ -32,9 +32,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.ExperimentalMaterial3Api @@ -74,6 +71,8 @@ import com.vitorpamplona.amethyst.commons.chess.OutgoingChallengeCard import com.vitorpamplona.amethyst.commons.chess.OverlappingAvatars import com.vitorpamplona.amethyst.commons.chess.PublicGameCard import com.vitorpamplona.amethyst.commons.chess.SpectatingGameCard +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.feeds.RefresheableBox import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.Route @@ -166,7 +165,7 @@ fun ChessLobbyScreen( navigationIcon = { IconButton(onClick = { nav.popBack() }) { Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, + symbol = MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = stringRes(R.string.back), ) } @@ -174,7 +173,7 @@ fun ChessLobbyScreen( actions = { IconButton(onClick = { showRelaySettings = true }) { Icon( - imageVector = Icons.Default.Settings, + symbol = MaterialSymbols.Settings, contentDescription = stringRes(R.string.relay_settings), ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/ChessRelaySettingsSheet.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/ChessRelaySettingsSheet.kt index d1a7d0e55..6763c4e46 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/ChessRelaySettingsSheet.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/ChessRelaySettingsSheet.kt @@ -31,9 +31,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.Close import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -49,6 +46,8 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.commons.chess.ChessConfig +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl @@ -278,7 +277,7 @@ private fun RelayRow( horizontalArrangement = Arrangement.spacedBy(8.dp), ) { Icon( - imageVector = Icons.Default.CheckCircle, + symbol = MaterialSymbols.CheckCircle, contentDescription = stringRes(R.string.connected), tint = if (isPreferred) { @@ -317,11 +316,11 @@ private fun ChessRelayRow( horizontalArrangement = Arrangement.spacedBy(8.dp), ) { Icon( - imageVector = + symbol = if (isConnected) { - Icons.Default.CheckCircle + MaterialSymbols.CheckCircle } else { - Icons.Default.Close + MaterialSymbols.Close }, contentDescription = if (isConnected) "Connected" else "Not connected", tint = diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/NewChessGameButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/NewChessGameButton.kt index 7281899c0..49704fd3b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/NewChessGameButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chess/NewChessGameButton.kt @@ -21,14 +21,14 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chess import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.Size26Modifier import com.vitorpamplona.amethyst.ui.theme.Size55Modifier @@ -46,7 +46,7 @@ fun NewChessGameButton(onClick: () -> Unit) { containerColor = MaterialTheme.colorScheme.primary, ) { Icon( - imageVector = Icons.Default.Add, + symbol = MaterialSymbols.Add, contentDescription = stringRes(R.string.new_chess_game), modifier = Size26Modifier, tint = Color.White, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/communities/list/NewCommunityButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/communities/list/NewCommunityButton.kt index a16490b90..8af0791b4 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/communities/list/NewCommunityButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/communities/list/NewCommunityButton.kt @@ -21,14 +21,14 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.communities.list import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Add import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.Route import com.vitorpamplona.amethyst.ui.stringRes @@ -44,7 +44,7 @@ fun NewCommunityButton(nav: INav) { containerColor = MaterialTheme.colorScheme.primary, ) { Icon( - imageVector = Icons.Outlined.Add, + symbol = MaterialSymbols.Add, contentDescription = stringRes(id = R.string.new_community), modifier = Size26Modifier, tint = Color.White, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/communities/newCommunity/NewCommunityScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/communities/newCommunity/NewCommunityScreen.kt index 456a577c3..727078c25 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/communities/newCommunity/NewCommunityScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/communities/newCommunity/NewCommunityScreen.kt @@ -39,9 +39,6 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AddPhotoAlternate -import androidx.compose.material.icons.outlined.Close import androidx.compose.material3.AssistChip import androidx.compose.material3.AssistChipDefaults import androidx.compose.material3.ExperimentalMaterial3Api @@ -74,6 +71,8 @@ import androidx.lifecycle.viewmodel.compose.viewModel import coil3.compose.AsyncImage import com.vitorpamplona.amethyst.Amethyst import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.nip05DnsIdentifiers.Nip05State import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.User @@ -345,7 +344,7 @@ private fun ExistingCommunityCover( ) IconButton(onClick = onClear) { Icon( - imageVector = Icons.Outlined.Close, + symbol = MaterialSymbols.Close, contentDescription = stringRes(R.string.remove), tint = MaterialTheme.colorScheme.onSurface, ) @@ -370,7 +369,7 @@ private fun CommunityImagePlaceholder(onClick: () -> Unit) { ) { Column(horizontalAlignment = Alignment.CenterHorizontally) { Icon( - imageVector = Icons.Default.AddPhotoAlternate, + symbol = MaterialSymbols.AddPhotoAlternate, contentDescription = null, modifier = Modifier.size(56.dp), tint = MaterialTheme.colorScheme.primary, @@ -516,7 +515,7 @@ private fun SelectedModeratorRow( } else if (onRemove != null) { IconButton(onClick = onRemove) { Icon( - imageVector = Icons.Outlined.Close, + symbol = MaterialSymbols.Close, contentDescription = stringRes(R.string.remove), ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/DiscoverScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/DiscoverScreen.kt index bf50afb7f..ac34f0169 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/DiscoverScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/DiscoverScreen.kt @@ -35,8 +35,6 @@ import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.PagerState import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Add import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon @@ -55,6 +53,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.ui.feeds.FeedContentState import com.vitorpamplona.amethyst.commons.ui.feeds.FeedState import com.vitorpamplona.amethyst.ui.actions.CrossfadeIfEnabled @@ -356,7 +356,7 @@ fun NewProductButton( containerColor = MaterialTheme.colorScheme.primary, ) { Icon( - imageVector = Icons.Outlined.Add, + symbol = MaterialSymbols.Add, contentDescription = stringRes(id = R.string.new_product), modifier = Size26Modifier, tint = Color.White, @@ -378,7 +378,7 @@ fun NewLongFormMarkdownButton( containerColor = MaterialTheme.colorScheme.primary, ) { Icon( - imageVector = Icons.Outlined.Add, + symbol = MaterialSymbols.Add, contentDescription = stringRes(id = R.string.new_long_form_post), modifier = Size26Modifier, tint = Color.White, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/nip23LongForm/LongFormPostScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/nip23LongForm/LongFormPostScreen.kt index e82d4c348..0e97f34bd 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/nip23LongForm/LongFormPostScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/discover/nip23LongForm/LongFormPostScreen.kt @@ -45,10 +45,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Close -import androidx.compose.material.icons.filled.Image import androidx.compose.material3.AssistChip import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider @@ -85,6 +81,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.EmptyTagList import com.vitorpamplona.amethyst.ui.actions.StrippingFailureDialog import com.vitorpamplona.amethyst.ui.actions.UrlUserTagOutputTransformation @@ -609,7 +607,7 @@ private fun BannerImageArea( .padding(4.dp), ) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = "Remove header image", tint = Color.White, ) @@ -635,7 +633,7 @@ private fun BannerImageArea( verticalArrangement = Arrangement.Center, ) { Icon( - Icons.Default.Image, + MaterialSymbols.Image, contentDescription = null, modifier = Modifier.size(48.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant, @@ -705,7 +703,7 @@ private fun TagInputSection( }, ) { Icon( - Icons.Default.Add, + MaterialSymbols.Add, contentDescription = "Add tag", ) } @@ -725,7 +723,7 @@ private fun TagInputSection( label = { Text(tag) }, trailingIcon = { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = "Remove $tag", modifier = Modifier.size(16.dp), ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/drafts/DraftListScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/drafts/DraftListScreen.kt index 0c9f326d8..c2252e14b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/drafts/DraftListScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/drafts/DraftListScreen.kt @@ -26,8 +26,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.itemsIndexed -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Delete import androidx.compose.material3.AlertDialog import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider @@ -45,6 +43,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.ui.feeds.FeedContentState import com.vitorpamplona.amethyst.commons.ui.feeds.FeedState import com.vitorpamplona.amethyst.ui.components.SwipeToDeleteWithConfirmation @@ -137,7 +137,7 @@ private fun RenderDraftListScreen( actions = { IconButton(onClick = { showDeleteDialog = true }) { Icon( - imageVector = Icons.Default.Delete, + symbol = MaterialSymbols.Delete, contentDescription = stringResource(R.string.delete_all), ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/dvms/FavoriteAlgoFeedToggle.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/dvms/FavoriteAlgoFeedToggle.kt index 3838bef64..e6cb59016 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/dvms/FavoriteAlgoFeedToggle.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/dvms/FavoriteAlgoFeedToggle.kt @@ -20,9 +20,6 @@ */ package com.vitorpamplona.amethyst.ui.screen.loggedIn.dvms -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Star -import androidx.compose.material.icons.outlined.StarBorder import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable @@ -30,6 +27,8 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.AddressableNote import com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.observeNoteAndMap import com.vitorpamplona.amethyst.ui.components.ClickableBox @@ -87,14 +86,14 @@ fun FavoriteAlgoFeedToggle( ) { if (isFavorite) { Icon( - imageVector = Icons.Filled.Star, + symbol = MaterialSymbols.Star, contentDescription = stringRes(R.string.remove_dvm_from_favorites), modifier = iconSizeModifier, tint = MaterialTheme.colorScheme.primary, ) } else { Icon( - imageVector = Icons.Outlined.StarBorder, + symbol = MaterialSymbols.StarBorder, contentDescription = stringRes(R.string.add_dvm_to_favorites), modifier = iconSizeModifier, tint = MaterialTheme.colorScheme.onSurface, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/dvms/favorites/FavoriteAlgoFeedsListScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/dvms/favorites/FavoriteAlgoFeedsListScreen.kt index 8d71292bc..594d0a47d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/dvms/favorites/FavoriteAlgoFeedsListScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/dvms/favorites/FavoriteAlgoFeedsListScreen.kt @@ -33,8 +33,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.Delete import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -53,6 +51,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.AddressableNote import com.vitorpamplona.amethyst.ui.components.MyAsyncImage import com.vitorpamplona.amethyst.ui.navigation.navs.INav @@ -218,7 +218,7 @@ private fun FavoriteAlgoFeedRow( IconButton(onClick = onRemove) { Icon( - imageVector = Icons.Rounded.Delete, + symbol = MaterialSymbols.Delete, contentDescription = stringRes(R.string.remove_dvm_from_favorites), ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/display/AddEmojiDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/display/AddEmojiDialog.kt index 733fe36c6..4d8ecbf6b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/display/AddEmojiDialog.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/display/AddEmojiDialog.kt @@ -27,9 +27,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Lock -import androidx.compose.material.icons.filled.LockOpen import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.Icon @@ -48,6 +45,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.actions.uploads.SelectSingleFromGallery import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.stringRes @@ -139,7 +138,7 @@ fun AddEmojiDialog( verticalAlignment = Alignment.CenterVertically, ) { Icon( - imageVector = if (isPrivate) Icons.Default.Lock else Icons.Default.LockOpen, + symbol = if (isPrivate) MaterialSymbols.Lock else MaterialSymbols.LockOpen, contentDescription = null, tint = MaterialTheme.colorScheme.onSurfaceVariant, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/display/EmojiPackScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/display/EmojiPackScreen.kt index ebf5343ec..73bfb3928 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/display/EmojiPackScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/display/EmojiPackScreen.kt @@ -34,10 +34,6 @@ import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Lock -import androidx.compose.material.icons.outlined.Add -import androidx.compose.material.icons.outlined.Delete import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -62,6 +58,8 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewmodel.compose.viewModel import coil3.compose.AsyncImage import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.nip30CustomEmojis.OwnedEmojiPack import com.vitorpamplona.amethyst.ui.components.M3ActionDialog import com.vitorpamplona.amethyst.ui.components.M3ActionRow @@ -139,7 +137,7 @@ private fun EmojiPackScreenView( text = { Text(text = stringRes(R.string.add_emoji_fab)) }, icon = { Icon( - imageVector = Icons.Outlined.Add, + symbol = MaterialSymbols.Add, contentDescription = null, ) }, @@ -196,7 +194,7 @@ private fun EmojiPackScreenView( ) { M3ActionSection { M3ActionRow( - icon = Icons.Outlined.Delete, + icon = MaterialSymbols.Delete, text = stringRes(R.string.quick_action_delete), isDestructive = true, ) { @@ -281,7 +279,7 @@ private fun EmojiCell( contentAlignment = Alignment.Center, ) { Icon( - imageVector = Icons.Filled.Lock, + symbol = MaterialSymbols.Lock, contentDescription = privateLabel, tint = Color.White, modifier = Modifier.size(10.dp), diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/list/ListOfEmojiPacksScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/list/ListOfEmojiPacksScreen.kt index 19fca7a54..c340a07af 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/list/ListOfEmojiPacksScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/list/ListOfEmojiPacksScreen.kt @@ -34,10 +34,6 @@ import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.lazy.grid.rememberLazyGridState import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Delete -import androidx.compose.material.icons.outlined.Edit -import androidx.compose.material.icons.outlined.EmojiEmotions import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon @@ -56,6 +52,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.NoteState import com.vitorpamplona.amethyst.model.nip30CustomEmojis.OwnedEmojiPack import com.vitorpamplona.amethyst.ui.components.ClickableBox @@ -237,13 +235,13 @@ private fun EmojiPackOptionsButton( onDismiss = { isMenuOpen.value = false }, ) { M3ActionSection { - M3ActionRow(icon = Icons.Outlined.Edit, text = stringRes(R.string.edit_emoji_pack)) { + M3ActionRow(icon = MaterialSymbols.Edit, text = stringRes(R.string.edit_emoji_pack)) { onEdit() isMenuOpen.value = false } } M3ActionSection { - M3ActionRow(icon = Icons.Outlined.Delete, text = stringRes(R.string.quick_action_delete), isDestructive = true) { + M3ActionRow(icon = MaterialSymbols.Delete, text = stringRes(R.string.quick_action_delete), isDestructive = true) { onDelete() isMenuOpen.value = false } @@ -279,7 +277,7 @@ private fun MyEmojiListRow( horizontalAlignment = Alignment.CenterHorizontally, ) { Icon( - imageVector = Icons.Outlined.EmojiEmotions, + symbol = MaterialSymbols.EmojiEmotions, contentDescription = null, modifier = Size40Modifier, ) @@ -298,7 +296,7 @@ fun EmojiPackFab(onAddPack: () -> Unit) { }, icon = { Icon( - imageVector = Icons.Outlined.EmojiEmotions, + symbol = MaterialSymbols.EmojiEmotions, contentDescription = null, ) }, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/list/metadata/EmojiPackMetadataScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/list/metadata/EmojiPackMetadataScreen.kt index 27b1e7aeb..5176027f1 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/list/metadata/EmojiPackMetadataScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/list/metadata/EmojiPackMetadataScreen.kt @@ -37,8 +37,6 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AddPhotoAlternate import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.LocalTextStyle @@ -66,6 +64,8 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import coil3.compose.AsyncImage import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.actions.uploads.GallerySelectSingle import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.topbars.CreatingTopBar @@ -260,7 +260,7 @@ private fun UploadPlaceholder(onClick: () -> Unit) { ) { Column(horizontalAlignment = Alignment.CenterHorizontally) { Icon( - imageVector = Icons.Default.AddPhotoAlternate, + symbol = MaterialSymbols.AddPhotoAlternate, contentDescription = null, modifier = Modifier.size(56.dp), tint = MaterialTheme.colorScheme.primary, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/membershipManagement/EmojiPackSelectionScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/membershipManagement/EmojiPackSelectionScreen.kt index bab38fb06..cbc5c421e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/membershipManagement/EmojiPackSelectionScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/membershipManagement/EmojiPackSelectionScreen.kt @@ -34,10 +34,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.recalculateWindowInsets import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.BookmarkAdd -import androidx.compose.material.icons.filled.BookmarkRemove -import androidx.compose.material.icons.outlined.EmojiEmotions import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.ListItem @@ -50,6 +46,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.AddressableNote import com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.observeNoteAndMap import com.vitorpamplona.amethyst.ui.navigation.navs.INav @@ -176,7 +174,7 @@ private fun EmojiPackSelectionItem( horizontalAlignment = Alignment.CenterHorizontally, ) { Icon( - imageVector = Icons.Outlined.EmojiEmotions, + symbol = MaterialSymbols.EmojiEmotions, contentDescription = null, modifier = Size40Modifier, ) @@ -203,13 +201,13 @@ private fun EmojiPackSelectionItem( ) { if (isIncluded) { Icon( - imageVector = Icons.Filled.BookmarkRemove, + symbol = MaterialSymbols.BookmarkRemove, contentDescription = stringRes(R.string.remove_from_emoji_list), tint = MaterialTheme.colorScheme.onErrorContainer, ) } else { Icon( - imageVector = Icons.Filled.BookmarkAdd, + symbol = MaterialSymbols.BookmarkAdd, contentDescription = stringRes(R.string.add_to_emoji_list), tint = MaterialTheme.colorScheme.onPrimary, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/membershipManagement/MyEmojiListScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/membershipManagement/MyEmojiListScreen.kt index 5716471cf..eaeb47a42 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/membershipManagement/MyEmojiListScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/membershipManagement/MyEmojiListScreen.kt @@ -36,8 +36,6 @@ import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.lazy.grid.rememberLazyGridState import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Delete import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -52,6 +50,8 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.AddressableNote import com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.observeNoteEvent import com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.observeNoteEventAndMap @@ -225,7 +225,7 @@ private fun SelectedEmojiPackCard( .background(MaterialTheme.colorScheme.surface.copy(alpha = 0.85f)), ) { Icon( - imageVector = Icons.Outlined.Delete, + symbol = MaterialSymbols.Delete, contentDescription = stringRes(R.string.remove_from_emoji_list), tint = MaterialTheme.colorScheme.error, modifier = Modifier.size(18.dp), diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/followPacks/feed/FollowPackFeedScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/followPacks/feed/FollowPackFeedScreen.kt index f9c702403..1e2880a0b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/followPacks/feed/FollowPackFeedScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/followPacks/feed/FollowPackFeedScreen.kt @@ -33,8 +33,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.statusBars import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.PagerState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -54,6 +52,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.lifecycle.viewmodel.compose.viewModel import coil3.compose.AsyncImage import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.AddressableNote import com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.observeNoteEvent import com.vitorpamplona.amethyst.ui.feeds.WatchLifecycleAndUpdateModel @@ -231,7 +231,7 @@ private fun FollowPackFeedTopBar( onClick = nav::popBack, ) { Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, + symbol = MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = stringRes(R.string.back), ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/NewChessGameButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/NewChessGameButton.kt index 26bc07716..3063cef3b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/NewChessGameButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/NewChessGameButton.kt @@ -21,8 +21,6 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.home import androidx.activity.compose.LocalActivity -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.runtime.Composable @@ -33,6 +31,8 @@ import androidx.compose.runtime.setValue import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.commons.chess.NewChessGameDialog +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.screen.loggedIn.chess.ChessViewModelFactory @@ -60,7 +60,7 @@ fun NewChessGameButton( onClick = { showDialog = true }, ) { Icon( - imageVector = Icons.Default.Add, + symbol = MaterialSymbols.Add, contentDescription = stringRes(R.string.new_chess_game), ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/ShortNotePostScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/ShortNotePostScreen.kt index f03d16590..d5e137b46 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/ShortNotePostScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/ShortNotePostScreen.kt @@ -40,8 +40,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.input.setTextAndPlaceCursorAtEnd import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Poll import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FilterChip import androidx.compose.material3.Icon @@ -66,6 +64,8 @@ import androidx.core.net.toUri import androidx.core.util.Consumer import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.actions.StrippingFailureDialog import com.vitorpamplona.amethyst.ui.actions.mediaServers.FileServerSelectionRow import com.vitorpamplona.amethyst.ui.actions.uploads.MAX_VOICE_RECORD_SECONDS @@ -695,14 +695,14 @@ private fun AddPollButton( ) { if (!isPollActive) { Icon( - imageVector = Icons.Outlined.Poll, + symbol = MaterialSymbols.Poll, contentDescription = stringRes(id = R.string.poll), modifier = Modifier.height(22.dp), tint = MaterialTheme.colorScheme.onBackground, ) } else { Icon( - imageVector = Icons.Outlined.Poll, + symbol = MaterialSymbols.Poll, contentDescription = stringRes(id = R.string.disable_poll), modifier = Modifier.height(22.dp), tint = MaterialTheme.colorScheme.primary, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/display/InterestSetScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/display/InterestSetScreen.kt index d09d04dad..b76c2e386 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/display/InterestSetScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/display/InterestSetScreen.kt @@ -30,11 +30,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Lock -import androidx.compose.material.icons.filled.LockOpen -import androidx.compose.material.icons.outlined.Delete import androidx.compose.material3.FilterChip import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -53,6 +48,8 @@ import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.nip51Lists.interestSets.InterestSet import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.topbars.TopBarWithBackButton @@ -141,7 +138,7 @@ private fun InterestSetContent( }, enabled = newHashtag.isNotBlank(), ) { - Icon(Icons.Default.Add, contentDescription = stringRes(R.string.interest_set_add_hashtag)) + Icon(MaterialSymbols.Add, contentDescription = stringRes(R.string.interest_set_add_hashtag)) } } @@ -151,7 +148,7 @@ private fun InterestSetContent( label = { Text(stringRes(R.string.interest_set_hashtag_private_toggle)) }, leadingIcon = { Icon( - imageVector = if (isPrivate) Icons.Default.Lock else Icons.Default.LockOpen, + symbol = if (isPrivate) MaterialSymbols.Lock else MaterialSymbols.LockOpen, contentDescription = null, ) }, @@ -230,7 +227,7 @@ private fun HashtagRow( leadingContent = { IconButton(onClick = onToggle) { Icon( - imageVector = if (isPrivate) Icons.Default.Lock else Icons.Default.LockOpen, + symbol = if (isPrivate) MaterialSymbols.Lock else MaterialSymbols.LockOpen, contentDescription = stringRes(R.string.interest_set_toggle_visibility), ) } @@ -238,7 +235,7 @@ private fun HashtagRow( trailingContent = { IconButton(onClick = onDelete) { Icon( - imageVector = Icons.Outlined.Delete, + symbol = MaterialSymbols.Delete, contentDescription = stringRes(R.string.quick_action_delete), ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/list/InterestSetItem.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/list/InterestSetItem.kt index c96996102..4b509aecb 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/list/InterestSetItem.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/list/InterestSetItem.kt @@ -25,11 +25,6 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.ContentCopy -import androidx.compose.material.icons.outlined.Delete -import androidx.compose.material.icons.outlined.Edit -import androidx.compose.material.icons.outlined.Tag import androidx.compose.material3.Icon import androidx.compose.material3.ListItem import androidx.compose.material3.Text @@ -40,6 +35,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.nip51Lists.interestSets.InterestSet import com.vitorpamplona.amethyst.ui.components.ClickableBox import com.vitorpamplona.amethyst.ui.components.M3ActionDialog @@ -96,7 +93,7 @@ fun InterestSetItem( }, leadingContent = { Icon( - imageVector = Icons.Outlined.Tag, + symbol = MaterialSymbols.Tag, contentDescription = null, modifier = Size40Modifier, ) @@ -126,17 +123,17 @@ private fun InterestSetOptionsButton( onDismiss = { isMenuOpen.value = false }, ) { M3ActionSection { - M3ActionRow(icon = Icons.Outlined.Edit, text = stringRes(R.string.interest_set_rename)) { + M3ActionRow(icon = MaterialSymbols.Edit, text = stringRes(R.string.interest_set_rename)) { onRename() isMenuOpen.value = false } - M3ActionRow(icon = Icons.Outlined.ContentCopy, text = stringRes(R.string.interest_set_clone)) { + M3ActionRow(icon = MaterialSymbols.ContentCopy, text = stringRes(R.string.interest_set_clone)) { onClone() isMenuOpen.value = false } } M3ActionSection { - M3ActionRow(icon = Icons.Outlined.Delete, text = stringRes(R.string.quick_action_delete), isDestructive = true) { + M3ActionRow(icon = MaterialSymbols.Delete, text = stringRes(R.string.quick_action_delete), isDestructive = true) { onDelete() isMenuOpen.value = false } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/list/ListOfInterestSetsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/list/ListOfInterestSetsScreen.kt index 005d45881..0eed33fcc 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/list/ListOfInterestSetsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/list/ListOfInterestSetsScreen.kt @@ -30,9 +30,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.PlaylistAdd -import androidx.compose.material.icons.outlined.Tag import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon @@ -47,6 +44,8 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.Route import com.vitorpamplona.amethyst.ui.navigation.topbars.TopBarWithBackButton @@ -125,7 +124,7 @@ private fun EmptyInterestSets() { horizontalAlignment = Alignment.CenterHorizontally, ) { Icon( - imageVector = Icons.Outlined.Tag, + symbol = MaterialSymbols.Tag, contentDescription = null, tint = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.size(64.dp), @@ -147,7 +146,7 @@ fun InterestSetFab(onAdd: () -> Unit) { }, icon = { Icon( - imageVector = Icons.AutoMirrored.Filled.PlaylistAdd, + symbol = MaterialSymbols.AutoMirrored.PlaylistAdd, contentDescription = null, ) }, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/keyBackup/AccountBackupScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/keyBackup/AccountBackupScreen.kt index 68bd1e6f8..80828b67d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/keyBackup/AccountBackupScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/keyBackup/AccountBackupScreen.kt @@ -38,10 +38,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Key -import androidx.compose.material.icons.outlined.Visibility -import androidx.compose.material.icons.outlined.VisibilityOff import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ExperimentalMaterial3Api @@ -85,6 +81,8 @@ import com.halilibo.richtext.ui.RichTextStyle import com.halilibo.richtext.ui.material3.RichText import com.halilibo.richtext.ui.resolveDefaults import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.ui.components.util.setText import com.vitorpamplona.amethyst.ui.navigation.navs.INav @@ -222,8 +220,7 @@ private fun AccountBackupScreenContent( Row { IconButton(onClick = { showCharsPassword = !showCharsPassword }) { Icon( - imageVector = - if (showCharsPassword) Icons.Outlined.VisibilityOff else Icons.Outlined.Visibility, + symbol = if (showCharsPassword) MaterialSymbols.VisibilityOff else MaterialSymbols.Visibility, contentDescription = if (showCharsPassword) { stringRes(R.string.show_password) @@ -288,7 +285,7 @@ private fun NSecCopyButton(accountViewModel: AccountViewModel) { ) { Icon( tint = MaterialTheme.colorScheme.onPrimary, - imageVector = Icons.Default.Key, + symbol = MaterialSymbols.Key, contentDescription = stringRes(R.string.copies_the_nsec_id_your_password_to_the_clipboard_for_backup), modifier = Modifier.padding(end = 5.dp), @@ -334,7 +331,7 @@ private fun EncryptNSecCopyButton( enabled = password.value.text.isNotBlank(), ) { Icon( - imageVector = Icons.Default.Key, + symbol = MaterialSymbols.Key, contentDescription = stringRes(R.string.copies_the_nsec_id_your_password_to_the_clipboard_for_backup), modifier = Modifier.padding(end = 5.dp), diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/PeopleListView.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/PeopleListView.kt index 8f81efe61..c53dc8c83 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/PeopleListView.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/PeopleListView.kt @@ -26,8 +26,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.PersonRemove import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -35,6 +33,8 @@ import androidx.compose.material3.OutlinedIconButton import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.note.UserComposeNoAction @@ -98,7 +98,7 @@ fun PeopleListItem( modifier = HalfPadding, ) { Icon( - imageVector = Icons.Filled.PersonRemove, + symbol = MaterialSymbols.PersonRemove, contentDescription = stringRes(R.string.remove_user_from_the_list), tint = MaterialTheme.colorScheme.onErrorContainer, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/ShowUserSuggestions.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/ShowUserSuggestions.kt index a30518634..c8190d844 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/ShowUserSuggestions.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/ShowUserSuggestions.kt @@ -35,8 +35,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Cancel import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults.cardElevation import androidx.compose.material3.HorizontalDivider @@ -63,6 +61,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.relayClient.searchCommand.UserSearchDataSourceSubscription @@ -271,7 +271,7 @@ private fun RowScope.HasUserTag( onClick = { onDelete(baseUser) }, ) { Icon( - imageVector = Icons.Default.Cancel, + symbol = MaterialSymbols.Cancel, contentDescription = stringRes(id = R.string.remove), modifier = Modifier.size(15.dp), tint = LightRedColor, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/lists/PeopleListScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/lists/PeopleListScreen.kt index 0bf5c2c6c..8ca459892 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/lists/PeopleListScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/lists/PeopleListScreen.kt @@ -38,11 +38,6 @@ import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.PagerState import androidx.compose.foundation.pager.rememberPagerState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.CellTower -import androidx.compose.material.icons.outlined.Delete -import androidx.compose.material.icons.outlined.Edit -import androidx.compose.material.icons.outlined.Share import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults.cardElevation @@ -73,6 +68,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.AddressableNote import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.User @@ -430,7 +426,7 @@ private fun ListActionsMenuButton( onDismiss = { isActionListOpen.value = false }, ) { M3ActionSection { - M3ActionRow(icon = Icons.Outlined.Share, text = stringRes(R.string.quick_action_share)) { + M3ActionRow(icon = MaterialSymbols.Share, text = stringRes(R.string.quick_action_share)) { val sendIntent = Intent().apply { action = Intent.ACTION_SEND @@ -450,17 +446,17 @@ private fun ListActionsMenuButton( context.startActivity(shareIntent) isActionListOpen.value = false } - M3ActionRow(icon = Icons.Outlined.Edit, text = stringRes(R.string.follow_set_edit_list_metadata)) { + M3ActionRow(icon = MaterialSymbols.Edit, text = stringRes(R.string.follow_set_edit_list_metadata)) { onEditList() isActionListOpen.value = false } - M3ActionRow(icon = Icons.Outlined.CellTower, text = stringRes(R.string.follow_set_broadcast)) { + M3ActionRow(icon = MaterialSymbols.CellTower, text = stringRes(R.string.follow_set_broadcast)) { onBroadcastList() isActionListOpen.value = false } } M3ActionSection { - M3ActionRow(icon = Icons.Outlined.Delete, text = stringRes(R.string.follow_set_delete), isDestructive = true) { + M3ActionRow(icon = MaterialSymbols.Delete, text = stringRes(R.string.follow_set_delete), isDestructive = true) { onDeleteList() isActionListOpen.value = false } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/packs/FollowPackScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/packs/FollowPackScreen.kt index c96b50fb9..583737659 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/packs/FollowPackScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/packs/FollowPackScreen.kt @@ -35,11 +35,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.CellTower -import androidx.compose.material.icons.outlined.Delete -import androidx.compose.material.icons.outlined.Edit -import androidx.compose.material.icons.outlined.Share import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults.cardElevation @@ -66,6 +61,7 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.AddressableNote import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.User @@ -285,7 +281,7 @@ private fun ListActionsMenuButton( onDismiss = { isActionListOpen.value = false }, ) { M3ActionSection { - M3ActionRow(icon = Icons.Outlined.Share, text = stringRes(R.string.quick_action_share)) { + M3ActionRow(icon = MaterialSymbols.Share, text = stringRes(R.string.quick_action_share)) { val sendIntent = Intent().apply { action = Intent.ACTION_SEND @@ -305,17 +301,17 @@ private fun ListActionsMenuButton( context.startActivity(shareIntent) isActionListOpen.value = false } - M3ActionRow(icon = Icons.Outlined.Edit, text = stringRes(R.string.follow_pack_edit_list_metadata)) { + M3ActionRow(icon = MaterialSymbols.Edit, text = stringRes(R.string.follow_pack_edit_list_metadata)) { onEditList() isActionListOpen.value = false } - M3ActionRow(icon = Icons.Outlined.CellTower, text = stringRes(R.string.follow_pack_broadcast)) { + M3ActionRow(icon = MaterialSymbols.CellTower, text = stringRes(R.string.follow_pack_broadcast)) { onBroadcastList() isActionListOpen.value = false } } M3ActionSection { - M3ActionRow(icon = Icons.Outlined.Delete, text = stringRes(R.string.follow_pack_delete), isDestructive = true) { + M3ActionRow(icon = MaterialSymbols.Delete, text = stringRes(R.string.follow_pack_delete), isDestructive = true) { onDeleteList() isActionListOpen.value = false } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/list/ListOfPeopleListsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/list/ListOfPeopleListsScreen.kt index dbfc056a1..a8c4b08f8 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/list/ListOfPeopleListsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/list/ListOfPeopleListsScreen.kt @@ -24,8 +24,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.PlaylistAdd import androidx.compose.material3.Icon import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Scaffold @@ -35,6 +33,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.topbars.TopBarWithBackButton import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @@ -83,7 +83,7 @@ fun NewListButton(onClick: () -> Unit) { OutlinedButton(onClick = onClick) { Row(horizontalArrangement = SpacedBy5dp, verticalAlignment = Alignment.CenterVertically) { Icon( - imageVector = Icons.AutoMirrored.Filled.PlaylistAdd, + symbol = MaterialSymbols.AutoMirrored.PlaylistAdd, contentDescription = null, ) Text(stringRes(R.string.follow_set_create_btn_label)) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/list/PeopleListItem.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/list/PeopleListItem.kt index 2268ff2e0..0ce9c2e0a 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/list/PeopleListItem.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/list/PeopleListItem.kt @@ -28,13 +28,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.offset -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.ContentCopy -import androidx.compose.material.icons.outlined.Delete -import androidx.compose.material.icons.outlined.Edit -import androidx.compose.material.icons.outlined.Groups -import androidx.compose.material.icons.outlined.Lock -import androidx.compose.material.icons.outlined.Public import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.Icon @@ -56,6 +49,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.model.nip51Lists.peopleList.PeopleList @@ -210,7 +205,7 @@ fun PeopleListItem( leadingContent = { Box(contentAlignment = Alignment.Center) { Icon( - imageVector = Icons.Outlined.Groups, + symbol = MaterialSymbols.Groups, contentDescription = stringRes(R.string.follow_set_icon_description), modifier = Size50ModifierOffset10, ) @@ -247,7 +242,7 @@ fun DisplayParticipantNumberAndStatus( horizontalArrangement = SpacedBy2dp, ) { Icon( - imageVector = Icons.Outlined.Lock, + symbol = MaterialSymbols.Lock, modifier = Size10Modifier, contentDescription = null, ) @@ -263,7 +258,7 @@ fun DisplayParticipantNumberAndStatus( horizontalArrangement = SpacedBy2dp, ) { Icon( - imageVector = Icons.Outlined.Public, + symbol = MaterialSymbols.Public, modifier = Size10Modifier, contentDescription = null, ) @@ -319,17 +314,17 @@ private fun ListOptionsMenu( onDismiss = onDismiss, ) { M3ActionSection { - M3ActionRow(icon = Icons.Outlined.Edit, text = stringRes(R.string.follow_set_edit_list_metadata)) { + M3ActionRow(icon = MaterialSymbols.Edit, text = stringRes(R.string.follow_set_edit_list_metadata)) { onListEditMetadata() onDismiss() } - M3ActionRow(icon = Icons.Outlined.ContentCopy, text = stringRes(R.string.follow_set_copy_action_btn_label)) { + M3ActionRow(icon = MaterialSymbols.ContentCopy, text = stringRes(R.string.follow_set_copy_action_btn_label)) { isCopyDialogOpen.value = true onDismiss() } } M3ActionSection { - M3ActionRow(icon = Icons.Outlined.Delete, text = stringRes(R.string.quick_action_delete), isDestructive = true) { + M3ActionRow(icon = MaterialSymbols.Delete, text = stringRes(R.string.quick_action_delete), isDestructive = true) { onDelete() onDismiss() } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/memberEdit/FollowPackAndUserItem.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/memberEdit/FollowPackAndUserItem.kt index fddb9c1c2..e38a5755e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/memberEdit/FollowPackAndUserItem.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/memberEdit/FollowPackAndUserItem.kt @@ -28,12 +28,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.PersonAdd -import androidx.compose.material.icons.filled.PersonRemove -import androidx.compose.material.icons.outlined.Groups -import androidx.compose.material.icons.outlined.Public -import androidx.compose.material.icons.outlined.RemoveCircleOutline import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.ListItem @@ -45,6 +39,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.screen.loggedIn.lists.list.DisplayParticipantNumberAndStatus import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.HalfHalfVertPadding @@ -113,7 +109,7 @@ fun FollowPackAndUserItem( leadingContent = { Box(contentAlignment = Alignment.Center) { Icon( - imageVector = Icons.Outlined.Groups, + symbol = MaterialSymbols.Groups, contentDescription = stringRes(R.string.follow_set_icon_description), modifier = Size50ModifierOffset10, ) @@ -149,13 +145,13 @@ private fun UserStatusInList( val icon = if (isMember) { - Icons.Outlined.Public + MaterialSymbols.Public } else { - Icons.Outlined.RemoveCircleOutline + MaterialSymbols.RemoveCircleOutline } Icon( - imageVector = icon, + symbol = icon, contentDescription = text, modifier = Size15Modifier, tint = MaterialTheme.colorScheme.primary, @@ -200,13 +196,13 @@ private fun UserAdditionOptions( ) { if (isUserInList) { Icon( - imageVector = Icons.Filled.PersonRemove, + symbol = MaterialSymbols.PersonRemove, contentDescription = stringRes(R.string.remove_user_from_the_list), tint = MaterialTheme.colorScheme.onErrorContainer, ) } else { Icon( - imageVector = Icons.Filled.PersonAdd, + symbol = MaterialSymbols.PersonAdd, contentDescription = stringRes(R.string.add_user_to_the_list), tint = MaterialTheme.colorScheme.onPrimary, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/memberEdit/PeopleListAndUserItem.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/memberEdit/PeopleListAndUserItem.kt index 7f37e0dad..13bd7d51b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/memberEdit/PeopleListAndUserItem.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/memberEdit/PeopleListAndUserItem.kt @@ -28,14 +28,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.PersonAdd -import androidx.compose.material.icons.filled.PersonRemove -import androidx.compose.material.icons.outlined.Groups -import androidx.compose.material.icons.outlined.Lock -import androidx.compose.material.icons.outlined.PersonAdd -import androidx.compose.material.icons.outlined.Public -import androidx.compose.material.icons.outlined.RemoveCircleOutline import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.ListItem @@ -49,6 +41,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.components.M3ActionDialog import com.vitorpamplona.amethyst.ui.components.M3ActionRow import com.vitorpamplona.amethyst.ui.components.M3ActionSection @@ -126,7 +120,7 @@ fun PeopleListAndUserItem( leadingContent = { Box(contentAlignment = Alignment.Center) { Icon( - imageVector = Icons.Outlined.Groups, + symbol = MaterialSymbols.Groups, contentDescription = stringRes(R.string.follow_set_icon_description), modifier = Size50ModifierOffset10, ) @@ -166,15 +160,15 @@ private fun UserStatusInList( val icon = if (userIsPublicMember) { - Icons.Outlined.Public + MaterialSymbols.Public } else if (userIsPrivateMember) { - Icons.Outlined.Lock + MaterialSymbols.Lock } else { - Icons.Outlined.RemoveCircleOutline + MaterialSymbols.RemoveCircleOutline } Icon( - imageVector = icon, + symbol = icon, contentDescription = text, modifier = Size15Modifier, tint = MaterialTheme.colorScheme.primary, @@ -202,14 +196,14 @@ private fun UserAdditionOptions( ) { M3ActionSection { M3ActionRow( - icon = Icons.Outlined.PersonAdd, + icon = MaterialSymbols.PersonAdd, text = stringRes(R.string.follow_set_public_member_add_label), ) { onAddUserToList(false) isUserAddTapped.value = false } M3ActionRow( - icon = Icons.Outlined.Lock, + icon = MaterialSymbols.Lock, text = stringRes(R.string.follow_set_private_member_add_label), ) { onAddUserToList(true) @@ -245,13 +239,13 @@ private fun UserAdditionOptions( ) { if (isUserInList) { Icon( - imageVector = Icons.Filled.PersonRemove, + symbol = MaterialSymbols.PersonRemove, contentDescription = stringRes(R.string.remove_user_from_the_list), tint = MaterialTheme.colorScheme.onErrorContainer, ) } else { Icon( - imageVector = Icons.Filled.PersonAdd, + symbol = MaterialSymbols.PersonAdd, contentDescription = stringRes(R.string.add_user_to_the_list), tint = MaterialTheme.colorScheme.onPrimary, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/longs/NewLongVideoButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/longs/NewLongVideoButton.kt index 3f889ad7b..b446229a6 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/longs/NewLongVideoButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/longs/NewLongVideoButton.kt @@ -30,10 +30,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AddPhotoAlternate -import androidx.compose.material.icons.filled.Videocam -import androidx.compose.material.icons.outlined.Close import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -48,6 +44,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.actions.NewMediaModel import com.vitorpamplona.amethyst.ui.actions.NewMediaView import com.vitorpamplona.amethyst.ui.actions.uploads.GallerySelect @@ -129,7 +127,7 @@ fun NewLongVideoButton( containerColor = MaterialTheme.colorScheme.primary, ) { Icon( - imageVector = Icons.Default.Videocam, + symbol = MaterialSymbols.Videocam, contentDescription = stringRes(id = R.string.record_a_video), modifier = Modifier.size(26.dp), tint = Color.White, @@ -148,7 +146,7 @@ fun NewLongVideoButton( containerColor = MaterialTheme.colorScheme.primary, ) { Icon( - imageVector = Icons.Default.AddPhotoAlternate, + symbol = MaterialSymbols.AddPhotoAlternate, contentDescription = stringRes(id = R.string.upload_image), modifier = Modifier.size(26.dp), tint = Color.White, @@ -171,7 +169,7 @@ fun NewLongVideoButton( exit = fadeOut(), ) { Icon( - imageVector = Icons.Outlined.Close, + symbol = MaterialSymbols.Close, contentDescription = stringRes(id = R.string.new_long_video), modifier = Size26Modifier, tint = Color.White, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/newUser/ImportFollowListPickFollowsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/newUser/ImportFollowListPickFollowsScreen.kt index bebc54b07..dadd6a223 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/newUser/ImportFollowListPickFollowsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/newUser/ImportFollowListPickFollowsScreen.kt @@ -35,10 +35,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.PersonAdd -import androidx.compose.material.icons.outlined.Circle import androidx.compose.material3.Checkbox import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.HorizontalDivider @@ -58,6 +54,8 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.AddressableNote import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.observeNoteEventAndMap @@ -283,7 +281,7 @@ private fun ImportHeader() { Column { Row(verticalAlignment = Alignment.CenterVertically) { Icon( - Icons.Default.PersonAdd, + MaterialSymbols.PersonAdd, contentDescription = null, tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(28.dp), @@ -320,7 +318,7 @@ private fun FollowEntryRow( verticalAlignment = Alignment.CenterVertically, ) { Icon( - if (isSelected) Icons.Filled.CheckCircle else Icons.Outlined.Circle, + if (isSelected) MaterialSymbols.CheckCircle else MaterialSymbols.Circle, contentDescription = null, tint = if (isSelected) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/newUser/ImportFollowListSelectUserScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/newUser/ImportFollowListSelectUserScreen.kt index 03b156ecf..fbb7392c0 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/newUser/ImportFollowListSelectUserScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/newUser/ImportFollowListSelectUserScreen.kt @@ -35,8 +35,6 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.PersonAdd import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -60,6 +58,8 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.User @@ -190,7 +190,7 @@ private fun ImportHeader() { Column { Row(verticalAlignment = Alignment.CenterVertically) { Icon( - Icons.Default.PersonAdd, + MaterialSymbols.PersonAdd, contentDescription = null, tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(28.dp), diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/pictures/NewPictureButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/pictures/NewPictureButton.kt index 964ef3250..e1fbd437c 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/pictures/NewPictureButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/pictures/NewPictureButton.kt @@ -30,10 +30,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AddPhotoAlternate -import androidx.compose.material.icons.filled.CameraAlt -import androidx.compose.material.icons.outlined.Close import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -48,6 +44,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.actions.NewMediaModel import com.vitorpamplona.amethyst.ui.actions.NewMediaView import com.vitorpamplona.amethyst.ui.actions.uploads.GallerySelect @@ -129,7 +127,7 @@ fun NewPictureButton( containerColor = MaterialTheme.colorScheme.primary, ) { Icon( - imageVector = Icons.Default.CameraAlt, + symbol = MaterialSymbols.CameraAlt, contentDescription = stringRes(id = R.string.take_a_picture), modifier = Modifier.size(26.dp), tint = Color.White, @@ -148,7 +146,7 @@ fun NewPictureButton( containerColor = MaterialTheme.colorScheme.primary, ) { Icon( - imageVector = Icons.Default.AddPhotoAlternate, + symbol = MaterialSymbols.AddPhotoAlternate, contentDescription = stringRes(id = R.string.upload_image), modifier = Modifier.size(26.dp), tint = Color.White, @@ -171,7 +169,7 @@ fun NewPictureButton( exit = fadeOut(), ) { Icon( - imageVector = Icons.Outlined.Close, + symbol = MaterialSymbols.Close, contentDescription = stringRes(id = R.string.new_picture), modifier = Size26Modifier, tint = Color.White, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/products/NewProductButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/products/NewProductButton.kt index 0afbe80bc..dea715da1 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/products/NewProductButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/products/NewProductButton.kt @@ -21,14 +21,14 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.products import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Add import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.Route import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @@ -50,7 +50,7 @@ fun NewProductButton( containerColor = MaterialTheme.colorScheme.primary, ) { Icon( - imageVector = Icons.Outlined.Add, + symbol = MaterialSymbols.Add, contentDescription = stringRes(id = R.string.new_product), modifier = Size26Modifier, tint = Color.White, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/FollowButtons.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/FollowButtons.kt index f9333edf8..82932f38b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/FollowButtons.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/FollowButtons.kt @@ -22,8 +22,6 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.profile import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CornerSize -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.List import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.Icon @@ -34,6 +32,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.ButtonBorder import com.vitorpamplona.amethyst.ui.theme.ButtonPadding @@ -81,7 +81,7 @@ fun ListButton(onClick: () -> Unit) { contentPadding = ZeroPadding, ) { Icon( - imageVector = Icons.AutoMirrored.Filled.List, + symbol = MaterialSymbols.AutoMirrored.List, contentDescription = stringRes(R.string.follow_set_profile_actions_menu_description), ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/gallery/GalleryThumb.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/gallery/GalleryThumb.kt index 69f439936..f5c690bd3 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/gallery/GalleryThumb.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/gallery/GalleryThumb.kt @@ -24,8 +24,6 @@ import androidx.annotation.OptIn import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.PlayCircleOutline import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable @@ -43,6 +41,8 @@ import coil3.compose.AsyncImagePainter import coil3.compose.SubcomposeAsyncImage import coil3.compose.SubcomposeAsyncImageContent import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.richtext.MediaUrlContent import com.vitorpamplona.amethyst.commons.richtext.MediaUrlImage import com.vitorpamplona.amethyst.commons.richtext.MediaUrlVideo @@ -248,7 +248,7 @@ fun UrlImageView( is AsyncImagePainter.State.Error -> { Box(defaultModifier, contentAlignment = Alignment.Center) { Icon( - imageVector = Icons.Default.PlayCircleOutline, + symbol = MaterialSymbols.PlayCircleOutline, contentDescription = stringRes(id = R.string.play), modifier = Size50Modifier, tint = MaterialTheme.colorScheme.onBackground, @@ -273,14 +273,14 @@ fun UrlImageView( thumbhash = content.thumbhash, ) Icon( - imageVector = Icons.Default.PlayCircleOutline, + symbol = MaterialSymbols.PlayCircleOutline, contentDescription = stringRes(id = R.string.play), modifier = Size50Modifier, tint = Color.White, ) } else { Icon( - imageVector = Icons.Default.PlayCircleOutline, + symbol = MaterialSymbols.PlayCircleOutline, contentDescription = stringRes(id = R.string.play), modifier = Size50Modifier, tint = Color.White, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/gallery/QuickActionGallery.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/gallery/QuickActionGallery.kt index 1618034f5..2db8332d3 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/gallery/QuickActionGallery.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/gallery/QuickActionGallery.kt @@ -20,12 +20,11 @@ */ package com.vitorpamplona.amethyst.ui.screen.loggedIn.profile.gallery -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Delete import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.ui.note.QuickActionAlertDialogOneButton import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @@ -61,7 +60,7 @@ fun DeleteFromGalleryDialog( QuickActionAlertDialogOneButton( title = stringRes(R.string.quick_action_request_deletion_gallery_title), textContent = stringRes(R.string.quick_action_request_deletion_gallery_alert_body_v2), - buttonIcon = Icons.Default.Delete, + buttonIcon = MaterialSymbols.Delete, buttonText = stringRes(R.string.quick_action_delete_dialog_btn), onClickDoOnce = { accountViewModel.removeFromMediaGallery(note) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/DrawAdditionalInfo.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/DrawAdditionalInfo.kt index cc062c25c..cf01ffc03 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/DrawAdditionalInfo.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/DrawAdditionalInfo.kt @@ -28,9 +28,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ContentCopy -import androidx.compose.material.icons.filled.Link import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -54,6 +51,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.nip05DnsIdentifiers.Nip05State import com.vitorpamplona.amethyst.commons.util.toShortDisplay import com.vitorpamplona.amethyst.model.User @@ -165,7 +164,7 @@ fun DrawAdditionalInfo( }, ) { Icon( - imageVector = Icons.Default.ContentCopy, + symbol = MaterialSymbols.ContentCopy, contentDescription = stringRes(id = R.string.copy_npub_to_clipboard), modifier = Size15Modifier, tint = MaterialTheme.colorScheme.placeholderText, @@ -189,7 +188,7 @@ fun DrawAdditionalInfo( }, ) { Icon( - imageVector = Icons.Default.ContentCopy, + symbol = MaterialSymbols.ContentCopy, contentDescription = stringRes(id = R.string.copy_nprofile_to_clipboard), modifier = Size15Modifier, tint = MaterialTheme.colorScheme.placeholderText, @@ -227,7 +226,7 @@ fun DrawAdditionalInfo( Row(verticalAlignment = Alignment.CenterVertically) { Icon( tint = MaterialTheme.colorScheme.placeholderText, - imageVector = Icons.Default.Link, + symbol = MaterialSymbols.Link, contentDescription = stringRes(R.string.website), modifier = Modifier.size(18.dp), ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/EditButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/EditButton.kt index a965ae628..4093ec311 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/EditButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/EditButton.kt @@ -22,8 +22,6 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.profile.header import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.EditNote import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.Icon import androidx.compose.runtime.Composable @@ -31,6 +29,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.Route import com.vitorpamplona.amethyst.ui.stringRes @@ -58,7 +58,7 @@ fun InnerEditButton(onClick: () -> Unit) { contentPadding = ZeroPadding, ) { Icon( - imageVector = Icons.Default.EditNote, + symbol = MaterialSymbols.EditNote, contentDescription = stringRes(R.string.edits_the_user_s_metadata), ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/PaymentButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/PaymentButton.kt index cc7959474..9d30842d5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/PaymentButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/PaymentButton.kt @@ -23,8 +23,6 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.profile.header import android.content.Intent import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.AccountBalanceWallet import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.Icon import androidx.compose.runtime.Composable @@ -37,6 +35,8 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import androidx.core.net.toUri import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.ui.components.M3ActionDialog import com.vitorpamplona.amethyst.ui.components.M3ActionRow @@ -85,7 +85,7 @@ fun PaymentButtonWithTargets(targets: List) { contentPadding = ZeroPadding, ) { Icon( - imageVector = Icons.Outlined.AccountBalanceWallet, + symbol = MaterialSymbols.AccountBalanceWallet, contentDescription = stringRes(R.string.payment_targets), ) } @@ -98,7 +98,7 @@ fun PaymentButtonWithTargets(targets: List) { M3ActionSection { targets.forEach { target -> M3ActionRow( - icon = Icons.Outlined.AccountBalanceWallet, + icon = MaterialSymbols.AccountBalanceWallet, text = "${target.type.replaceFirstChar(Char::titlecase)}: ${target.authority}", onClick = { expanded = false diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/ProfileHeader.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/ProfileHeader.kt index a2b940d7a..42e35efcf 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/ProfileHeader.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/ProfileHeader.kt @@ -33,9 +33,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AddPhotoAlternate -import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.HorizontalDivider @@ -61,6 +58,8 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.richtext.RichTextParser import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.relayClient.reqCommand.user.observeUserPicture @@ -118,7 +117,7 @@ fun ProfileHeader( ) { Icon( tint = MaterialTheme.colorScheme.placeholderText, - imageVector = Icons.Default.MoreVert, + symbol = MaterialSymbols.MoreVert, contentDescription = stringRes(R.string.more_options), ) @@ -275,7 +274,7 @@ private fun ProfilePictureUploadButton( contentAlignment = Alignment.Center, ) { Icon( - imageVector = Icons.Default.AddPhotoAlternate, + symbol = MaterialSymbols.AddPhotoAlternate, contentDescription = stringRes(R.string.upload_image), modifier = Modifier.size(40.dp), tint = MaterialTheme.colorScheme.onSurface, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/UserProfileDropDownMenu.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/UserProfileDropDownMenu.kt index e730f3e0e..0fc0096a5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/UserProfileDropDownMenu.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/UserProfileDropDownMenu.kt @@ -21,17 +21,12 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.profile.header import android.content.Intent -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Block -import androidx.compose.material.icons.outlined.CheckCircle -import androidx.compose.material.icons.outlined.ContentCopy -import androidx.compose.material.icons.outlined.Report -import androidx.compose.material.icons.outlined.Share import androidx.compose.runtime.Composable import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.platform.LocalClipboard import androidx.compose.ui.platform.LocalContext import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.ui.components.M3ActionDialog import com.vitorpamplona.amethyst.ui.components.M3ActionRow @@ -63,7 +58,7 @@ fun UserProfileDropDownMenu( // Share section M3ActionSection { M3ActionRow( - icon = Icons.Outlined.ContentCopy, + icon = MaterialSymbols.ContentCopy, text = stringRes(R.string.copy_user_id), ) { scope.launch { @@ -72,7 +67,7 @@ fun UserProfileDropDownMenu( } } M3ActionRow( - icon = Icons.Outlined.Share, + icon = MaterialSymbols.Share, text = stringRes(R.string.quick_action_share), ) { val sendIntent = @@ -96,7 +91,7 @@ fun UserProfileDropDownMenu( M3ActionSection { if (accountViewModel.account.isHidden(user)) { M3ActionRow( - icon = Icons.Outlined.CheckCircle, + icon = MaterialSymbols.CheckCircle, text = stringRes(R.string.unblock_user), ) { accountViewModel.show(user) @@ -104,7 +99,7 @@ fun UserProfileDropDownMenu( } } else { M3ActionRow( - icon = Icons.Outlined.Block, + icon = MaterialSymbols.Block, text = stringRes(R.string.block_hide_user), isDestructive = true, ) { @@ -116,27 +111,27 @@ fun UserProfileDropDownMenu( // Report section M3ActionSection { - M3ActionRow(icon = Icons.Outlined.Report, text = stringRes(R.string.report_spam_scam), isDestructive = true) { + M3ActionRow(icon = MaterialSymbols.Report, text = stringRes(R.string.report_spam_scam), isDestructive = true) { accountViewModel.report(user, ReportType.SPAM) onDismiss() } - M3ActionRow(icon = Icons.Outlined.Report, text = stringRes(R.string.report_hateful_speech), isDestructive = true) { + M3ActionRow(icon = MaterialSymbols.Report, text = stringRes(R.string.report_hateful_speech), isDestructive = true) { accountViewModel.report(user, ReportType.PROFANITY) onDismiss() } - M3ActionRow(icon = Icons.Outlined.Report, text = stringRes(R.string.report_impersonation), isDestructive = true) { + M3ActionRow(icon = MaterialSymbols.Report, text = stringRes(R.string.report_impersonation), isDestructive = true) { accountViewModel.report(user, ReportType.IMPERSONATION) onDismiss() } - M3ActionRow(icon = Icons.Outlined.Report, text = stringRes(R.string.report_nudity_porn), isDestructive = true) { + M3ActionRow(icon = MaterialSymbols.Report, text = stringRes(R.string.report_nudity_porn), isDestructive = true) { accountViewModel.report(user, ReportType.NUDITY) onDismiss() } - M3ActionRow(icon = Icons.Outlined.Report, text = stringRes(R.string.report_illegal_behaviour), isDestructive = true) { + M3ActionRow(icon = MaterialSymbols.Report, text = stringRes(R.string.report_illegal_behaviour), isDestructive = true) { accountViewModel.report(user, ReportType.ILLEGAL) onDismiss() } - M3ActionRow(icon = Icons.Outlined.Report, text = stringRes(R.string.report_malware), isDestructive = true) { + M3ActionRow(icon = MaterialSymbols.Report, text = stringRes(R.string.report_malware), isDestructive = true) { accountViewModel.report(user, ReportType.MALWARE) onDismiss() } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/badges/DisplayBadges.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/badges/DisplayBadges.kt index f1f12a75d..32f6b70be 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/badges/DisplayBadges.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/badges/DisplayBadges.kt @@ -36,8 +36,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Settings import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -61,6 +59,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.AddressableNote import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.Note @@ -172,7 +172,7 @@ private fun RenderProfileBadgeStrip( modifier = Modifier.size(32.dp), ) { Icon( - imageVector = Icons.Outlined.Settings, + symbol = MaterialSymbols.Settings, contentDescription = stringRes(R.string.profile_badges_title), modifier = Modifier.size(18.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/AllRelayListScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/AllRelayListScreen.kt index 50604871b..0951d107d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/AllRelayListScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/AllRelayListScreen.kt @@ -27,10 +27,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Share -import androidx.compose.material.icons.outlined.Description -import androidx.compose.material.icons.outlined.FolderZip import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -52,6 +48,8 @@ import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.commons.defaults.DefaultDMRelayList import com.vitorpamplona.amethyst.commons.defaults.DefaultIndexerRelayList import com.vitorpamplona.amethyst.commons.defaults.DefaultSearchRelayList +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.components.M3ActionDialog import com.vitorpamplona.amethyst.ui.components.M3ActionRow import com.vitorpamplona.amethyst.ui.components.M3ActionSection @@ -591,7 +589,7 @@ fun ExportDropdownMenu(collection: () -> RelayListCollection) { IconButton(onClick = { expanded = true }) { Icon( - imageVector = Icons.Default.Share, + symbol = MaterialSymbols.Share, contentDescription = stringRes(R.string.export_relay_settings), ) } @@ -603,14 +601,14 @@ fun ExportDropdownMenu(collection: () -> RelayListCollection) { ) { M3ActionSection { M3ActionRow( - icon = Icons.Outlined.Description, + icon = MaterialSymbols.Description, text = stringRes(R.string.export_as_text), ) { expanded = false RelayExporter(context).export(collection()) } M3ActionRow( - icon = Icons.Outlined.FolderZip, + icon = MaterialSymbols.FolderZip, text = stringRes(R.string.export_as_zip), ) { expanded = false diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/RelayInformationScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/RelayInformationScreen.kt index 9a553398b..07f18b3d4 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/RelayInformationScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/RelayInformationScreen.kt @@ -42,34 +42,6 @@ import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.selection.SelectionContainer -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.Article -import androidx.compose.material.icons.automirrored.filled.ContactSupport -import androidx.compose.material.icons.automirrored.filled.Feed -import androidx.compose.material.icons.automirrored.filled.Label -import androidx.compose.material.icons.automirrored.filled.List -import androidx.compose.material.icons.automirrored.filled.Message -import androidx.compose.material.icons.automirrored.filled.Send -import androidx.compose.material.icons.filled.AttachMoney -import androidx.compose.material.icons.filled.Bolt -import androidx.compose.material.icons.filled.Code -import androidx.compose.material.icons.filled.Dns -import androidx.compose.material.icons.filled.EditNote -import androidx.compose.material.icons.filled.EditOff -import androidx.compose.material.icons.filled.FilterAlt -import androidx.compose.material.icons.filled.Gavel -import androidx.compose.material.icons.filled.History -import androidx.compose.material.icons.filled.Key -import androidx.compose.material.icons.filled.Language -import androidx.compose.material.icons.filled.Lock -import androidx.compose.material.icons.filled.Payment -import androidx.compose.material.icons.filled.People -import androidx.compose.material.icons.filled.PrivacyTip -import androidx.compose.material.icons.filled.Settings -import androidx.compose.material.icons.filled.Storage -import androidx.compose.material.icons.filled.Tag -import androidx.compose.material.icons.filled.Topic -import androidx.compose.material.icons.filled.Translate import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.ExperimentalMaterial3Api @@ -91,7 +63,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.res.stringResource @@ -105,6 +76,9 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.Amethyst import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.util.timeDiffAgoShortish import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.nip11RelayInfo.loadRelayInfo @@ -922,7 +896,7 @@ private fun SubscriptionCard( horizontalArrangement = Arrangement.spacedBy(8.dp), ) { Icon( - imageVector = Icons.Default.FilterAlt, + symbol = MaterialSymbols.FilterAlt, contentDescription = null, modifier = Modifier.size(14.dp), tint = MaterialTheme.colorScheme.primary, @@ -972,7 +946,7 @@ private fun OutboxEventsCard(eventIds: Set) { horizontalArrangement = Arrangement.spacedBy(4.dp), ) { Icon( - imageVector = Icons.AutoMirrored.Filled.Send, + symbol = MaterialSymbols.AutoMirrored.Send, contentDescription = null, modifier = Modifier.size(12.dp), tint = MaterialTheme.colorScheme.onTertiaryContainer, @@ -1144,7 +1118,7 @@ private fun RelayHeader( onClick = { nav.nav(Route.RelayFeed(url = relay.url)) }, ) { Icon( - imageVector = Icons.AutoMirrored.Filled.Feed, + symbol = MaterialSymbols.AutoMirrored.Feed, contentDescription = null, modifier = Modifier.size(18.dp), ) @@ -1158,7 +1132,7 @@ private fun RelayHeader( shape = ButtonBorder, ) { Icon( - Icons.Default.People, + MaterialSymbols.People, contentDescription = stringRes(R.string.relay_members), modifier = Modifier.size(18.dp), ) @@ -1173,7 +1147,7 @@ private fun RelayHeader( shape = ButtonBorder, ) { Icon( - Icons.Default.Settings, + MaterialSymbols.Settings, contentDescription = stringRes(R.string.manage), modifier = Height25Modifier, ) @@ -1203,7 +1177,7 @@ fun FeesCard( } payUrl?.let { val uri = LocalUriHandler.current - ClickableInfoRow(Icons.Default.Payment, stringRes(R.string.payments_url), it.removePrefix(HTTPS_PREFIX)) { + ClickableInfoRow(MaterialSymbols.Payment, stringRes(R.string.payments_url), it.removePrefix(HTTPS_PREFIX)) { runCatching { uri.openUri(it) } @@ -1233,23 +1207,23 @@ fun LimitationsCard(lim: Nip11RelayInformation.RelayInformationLimitation) { val no = stringRes(R.string.no) lim.auth_required?.let { - InfoRow(Icons.Default.History, stringRes(R.string.auth_required), if (it) yes else no) + InfoRow(MaterialSymbols.History, stringRes(R.string.auth_required), if (it) yes else no) } lim.payment_required?.let { - InfoRow(Icons.Default.Lock, stringRes(R.string.payment_required), if (it) yes else no) + InfoRow(MaterialSymbols.Lock, stringRes(R.string.payment_required), if (it) yes else no) } lim.restricted_writes?.let { - InfoRow(Icons.Default.EditOff, stringRes(R.string.restricted_writes), if (it) yes else no) + InfoRow(MaterialSymbols.EditOff, stringRes(R.string.restricted_writes), if (it) yes else no) } val minPoW = lim.min_pow_difficulty if (minPoW != null && minPoW > 0) { - InfoRow(Icons.Default.Bolt, stringRes(R.string.minimum_pow), stringRes(R.string.amount_in_bits, minPoW)) + InfoRow(MaterialSymbols.Bolt, stringRes(R.string.minimum_pow), stringRes(R.string.amount_in_bits, minPoW)) } else { lim.min_prefix?.let { if (it > 0) { - InfoRow(Icons.Default.Key, stringRes(R.string.minimum_prefix), stringRes(R.string.amount_in_bits, it * 8)) + InfoRow(MaterialSymbols.Key, stringRes(R.string.minimum_prefix), stringRes(R.string.amount_in_bits, it * 8)) } } } @@ -1271,22 +1245,22 @@ fun LimitationsCard(lim: Nip11RelayInformation.RelayInformationLimitation) { HorizontalDivider(modifier = Modifier.padding(vertical = 8.dp)) lim.max_message_length?.let { - InfoRow(Icons.AutoMirrored.Default.Message, stringRes(R.string.max_message_length), "${it / 1024} kb") + InfoRow(MaterialSymbols.AutoMirrored.Message, stringRes(R.string.max_message_length), "${it / 1024} kb") } lim.max_subscriptions?.let { - InfoRow(Icons.Default.Dns, stringRes(R.string.max_subs), it.toString()) + InfoRow(MaterialSymbols.Dns, stringRes(R.string.max_subs), it.toString()) } lim.max_filters?.let { - InfoRow(Icons.Default.FilterAlt, stringRes(R.string.max_filters_per_sub), it.toString()) + InfoRow(MaterialSymbols.FilterAlt, stringRes(R.string.max_filters_per_sub), it.toString()) } lim.max_limit?.let { - InfoRow(Icons.AutoMirrored.Default.List, stringRes(R.string.max_limit_events_returning), it.toString()) + InfoRow(MaterialSymbols.AutoMirrored.List, stringRes(R.string.max_limit_events_returning), it.toString()) } lim.default_limit?.let { - InfoRow(Icons.AutoMirrored.Default.List, stringRes(R.string.max_limit_events_returning), it.toString()) + InfoRow(MaterialSymbols.AutoMirrored.List, stringRes(R.string.max_limit_events_returning), it.toString()) } lim.max_subid_length?.let { - InfoRow(Icons.AutoMirrored.Default.Label, stringRes(R.string.max_subid_length), it.toString()) + InfoRow(MaterialSymbols.AutoMirrored.Label, stringRes(R.string.max_subid_length), it.toString()) } } } @@ -1302,11 +1276,11 @@ fun LimitationsCard(lim: Nip11RelayInformation.RelayInformationLimitation) { HorizontalDivider(modifier = Modifier.padding(vertical = 8.dp)) lim.max_event_tags?.let { - InfoRow(Icons.Default.Tag, stringRes(R.string.maximum_event_tags), it.toString()) + InfoRow(MaterialSymbols.Tag, stringRes(R.string.maximum_event_tags), it.toString()) } lim.max_content_length?.let { - InfoRow(Icons.AutoMirrored.Default.Article, stringRes(R.string.max_content_length), "${it / 1024} kb") + InfoRow(MaterialSymbols.AutoMirrored.Article, stringRes(R.string.max_content_length), "${it / 1024} kb") } } } @@ -1323,12 +1297,12 @@ fun LimitationsCard(lim: Nip11RelayInformation.RelayInformationLimitation) { lim.created_at_lower_limit?.let { if (it > 0) { - InfoRow(Icons.Default.History, stringRes(R.string.discards_older_than), stringRes(R.string.time_in_the_past, timeDiffAgoShortish(it))) + InfoRow(MaterialSymbols.History, stringRes(R.string.discards_older_than), stringRes(R.string.time_in_the_past, timeDiffAgoShortish(it))) } } lim.created_at_upper_limit?.let { if (it > 0) { - InfoRow(Icons.Default.History, stringRes(R.string.accepts_up_to), stringRes(R.string.time_in_the_future, timeDiffAgoShortish(it))) + InfoRow(MaterialSymbols.History, stringRes(R.string.accepts_up_to), stringRes(R.string.time_in_the_future, timeDiffAgoShortish(it))) } } } @@ -1353,18 +1327,18 @@ fun SoftwareCard(relayInfo: Nip11RelayInformation) { val uri = LocalUriHandler.current relayInfo.software?.let { if (it.contains(HTTPS_PREFIX)) { - ClickableInfoRow(Icons.Default.Code, stringRes(R.string.software), it.removePrefix("git+https://").removePrefix(HTTPS_PREFIX)) { + ClickableInfoRow(MaterialSymbols.Code, stringRes(R.string.software), it.removePrefix("git+https://").removePrefix(HTTPS_PREFIX)) { runCatching { uri.openUri(it.removePrefix("git+")) } } } else { - InfoRow(Icons.Default.Code, stringRes(R.string.software), it) + InfoRow(MaterialSymbols.Code, stringRes(R.string.software), it) } } relayInfo.version?.let { - InfoRow(Icons.Default.Storage, stringRes(R.string.version), it) + InfoRow(MaterialSymbols.Storage, stringRes(R.string.version), it) } relayInfo.supported_nips?.let { nips -> @@ -1459,7 +1433,7 @@ fun TargetAudienceCard( } } } else if (tags.isNotEmpty()) { - InfoRow(Icons.Default.Topic, stringRes(R.string.topics), tags.joinToString()) + InfoRow(MaterialSymbols.Topic, stringRes(R.string.topics), tags.joinToString()) } } relay.relay_countries?.let { countries -> @@ -1497,7 +1471,7 @@ fun TargetAudienceCard( } } else if (countries.isNotEmpty()) { InfoRow( - Icons.Default.Language, + MaterialSymbols.Language, stringRes(R.string.countries), countries.joinToString { if (it == "*") allCountries else it @@ -1538,7 +1512,7 @@ fun TargetAudienceCard( } } else if (languages.isNotEmpty()) { InfoRow( - Icons.Default.Translate, + MaterialSymbols.Translate, stringRes(R.string.languages), languages.joinToString { if (it == "*") allLang else it @@ -1557,18 +1531,18 @@ fun PoliciesCard(relay: Nip11RelayInformation) { val uri = LocalUriHandler.current relay.contact?.let { if (it.contains("@")) { - ClickableInfoRow(Icons.AutoMirrored.Default.ContactSupport, stringRes(R.string.contact), it) { + ClickableInfoRow(MaterialSymbols.AutoMirrored.ContactSupport, stringRes(R.string.contact), it) { runCatching { uri.openUri("mailto:$it") } } } else { - InfoRow(Icons.AutoMirrored.Default.ContactSupport, stringRes(R.string.contact), it) + InfoRow(MaterialSymbols.AutoMirrored.ContactSupport, stringRes(R.string.contact), it) } } relay.posting_policy?.let { - ClickableInfoRow(Icons.Default.EditNote, stringRes(R.string.posting_policy), it) { + ClickableInfoRow(MaterialSymbols.EditNote, stringRes(R.string.posting_policy), it) { runCatching { uri.openUri(it) } @@ -1578,24 +1552,24 @@ fun PoliciesCard(relay: Nip11RelayInformation) { val pp = relay.privacy_policy if (pp != null) { - ClickableInfoRow(Icons.Default.PrivacyTip, stringRes(R.string.privacy_policy), pp.removePrefix(HTTPS_PREFIX)) { + ClickableInfoRow(MaterialSymbols.PrivacyTip, stringRes(R.string.privacy_policy), pp.removePrefix(HTTPS_PREFIX)) { runCatching { uri.openUri(pp) } } } else { - InfoRow(Icons.Default.PrivacyTip, stringRes(R.string.privacy_policy), stringRes(R.string.not_available_acronym)) + InfoRow(MaterialSymbols.PrivacyTip, stringRes(R.string.privacy_policy), stringRes(R.string.not_available_acronym)) } val ts = relay.terms_of_service if (ts != null) { - ClickableInfoRow(Icons.Default.Gavel, stringRes(R.string.terms_and_conditions), ts.removePrefix(HTTPS_PREFIX)) { + ClickableInfoRow(MaterialSymbols.Gavel, stringRes(R.string.terms_and_conditions), ts.removePrefix(HTTPS_PREFIX)) { runCatching { uri.openUri(ts) } } } else { - InfoRow(Icons.Default.Gavel, stringRes(R.string.terms_and_conditions), stringRes(R.string.not_available_acronym)) + InfoRow(MaterialSymbols.Gavel, stringRes(R.string.terms_and_conditions), stringRes(R.string.not_available_acronym)) } } } @@ -1688,7 +1662,7 @@ private fun RelayMonitorReportCard( val networkTypes = event.networkTypes() if (networkTypes.isNotEmpty()) { InfoRow( - Icons.Default.Language, + MaterialSymbols.Language, stringRes(R.string.relay_monitor_network), networkTypes.joinToString { it.code }, ) @@ -1698,7 +1672,7 @@ private fun RelayMonitorReportCard( val relayTypes = event.relayTypes() if (relayTypes.isNotEmpty()) { InfoRow( - Icons.Default.Dns, + MaterialSymbols.Dns, stringRes(R.string.relay_monitor_relay_type), relayTypes.joinToString(), ) @@ -1708,7 +1682,7 @@ private fun RelayMonitorReportCard( val requirements = event.requirements() if (requirements.isNotEmpty()) { InfoRow( - Icons.Default.Lock, + MaterialSymbols.Lock, stringRes(R.string.relay_monitor_requirements), requirements.joinToString { req -> if (req.negated) "!${req.value}" else req.value @@ -1768,7 +1742,7 @@ fun SectionHeader(title: String) { @Composable private fun InfoRow( - icon: ImageVector, + icon: MaterialSymbol, label: String, value: String, ) { @@ -1785,7 +1759,7 @@ private fun InfoRow( @Composable private fun ClickableInfoRow( - icon: ImageVector, + icon: MaterialSymbol, label: String, value: String, onClickValue: () -> Unit, @@ -1816,9 +1790,9 @@ fun FeeRow( } if (fee.unit == "msats") { - InfoRow(Icons.Default.AttachMoney, combinedLabel, "${it / 1000} sats") + InfoRow(MaterialSymbols.AttachMoney, combinedLabel, "${it / 1000} sats") } else { - InfoRow(Icons.Default.AttachMoney, combinedLabel, "$it ${fee.unit}") + InfoRow(MaterialSymbols.AttachMoney, combinedLabel, "$it ${fee.unit}") } } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/common/BasicRelaySetupInfoClickableRow.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/common/BasicRelaySetupInfoClickableRow.kt index 17f9f4529..ba938a848 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/common/BasicRelaySetupInfoClickableRow.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/common/BasicRelaySetupInfoClickableRow.kt @@ -30,8 +30,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.DragIndicator import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -44,6 +42,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalClipboard import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.nip11RelayInfo.Nip11CachedRetriever import com.vitorpamplona.amethyst.model.nip11RelayInfo.loadRelayInfo import com.vitorpamplona.amethyst.ui.components.util.setText @@ -115,7 +115,7 @@ fun BasicRelaySetupInfoClickableRow( if (dragState != null && index >= 0) { val handleModifier = Modifier.height(24.dp).relayDragHandle(index, dragState) Icon( - Icons.Default.DragIndicator, + MaterialSymbols.DragIndicator, contentDescription = stringRes(R.string.relay_reorder), modifier = handleModifier, tint = MaterialTheme.colorScheme.onSurfaceVariant, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/common/RelayEventCountRow.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/common/RelayEventCountRow.kt index 835eb764d..6b223c742 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/common/RelayEventCountRow.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/common/RelayEventCountRow.kt @@ -28,8 +28,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Storage import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -40,6 +38,8 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.service.countToHumanReadable import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.Font10SP @@ -84,7 +84,7 @@ fun RelayEventCountRow( .padding(horizontal = 6.dp, vertical = 2.dp), ) { Icon( - imageVector = Icons.Default.Storage, + symbol = MaterialSymbols.Storage, contentDescription = stringRes(R.string.relay_event_count), modifier = Size10Modifier, tint = pillColor, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/common/RelayNameAndRemoveButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/common/RelayNameAndRemoveButton.kt index aedd53255..5c33a734b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/common/RelayNameAndRemoveButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/common/RelayNameAndRemoveButton.kt @@ -25,9 +25,6 @@ import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Cancel -import androidx.compose.material.icons.filled.Paid import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -40,6 +37,8 @@ import androidx.compose.ui.platform.LocalClipboard import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.components.util.setText import com.vitorpamplona.amethyst.ui.painterRes import com.vitorpamplona.amethyst.ui.stringRes @@ -77,7 +76,7 @@ fun RelayNameAndRemoveButton( if (item.paidRelay) { Icon( - imageVector = Icons.Default.Paid, + symbol = MaterialSymbols.Paid, contentDescription = stringRes(id = R.string.paid_relay), modifier = Modifier @@ -106,7 +105,7 @@ fun RelayNameAndRemoveButton( onClick = { onDelete(item) }, ) { Icon( - imageVector = Icons.Default.Cancel, + symbol = MaterialSymbols.Cancel, contentDescription = stringRes(id = R.string.remove), modifier = Modifier diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/common/RelayStatusRow.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/common/RelayStatusRow.kt index 19e9ddcd9..4fdacad89 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/common/RelayStatusRow.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/common/RelayStatusRow.kt @@ -24,11 +24,6 @@ import androidx.compose.foundation.gestures.detectTapGestures import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.DeleteSweep -import androidx.compose.material.icons.filled.Download -import androidx.compose.material.icons.filled.SyncProblem -import androidx.compose.material.icons.filled.Upload import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -40,6 +35,8 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.service.countToHumanReadable import com.vitorpamplona.amethyst.service.countToHumanReadableBytes import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @@ -111,7 +108,7 @@ fun RelayStatusRow( }, ) { Icon( - imageVector = Icons.Default.Download, + symbol = MaterialSymbols.Download, contentDescription = stringRes(R.string.read_from_relay), modifier = Size15Modifier, tint = MaterialTheme.colorScheme.allGoodColor, @@ -143,7 +140,7 @@ fun RelayStatusRow( }, ) { Icon( - imageVector = Icons.Default.Upload, + symbol = MaterialSymbols.Upload, stringRes(R.string.write_to_relay), modifier = Size15Modifier, tint = MaterialTheme.colorScheme.allGoodColor, @@ -177,7 +174,7 @@ fun RelayStatusRow( val successRate = ((item.relayStat.connectionCompleted / item.relayStat.connectionTentatives.toFloat()) * 100).toInt() Icon( - imageVector = Icons.Default.SyncProblem, + symbol = MaterialSymbols.SyncProblem, stringRes(R.string.errors), modifier = Size15Modifier, tint = @@ -217,7 +214,7 @@ fun RelayStatusRow( horizontalArrangement = Arrangement.End, ) { Icon( - imageVector = Icons.Default.DeleteSweep, + symbol = MaterialSymbols.DeleteSweep, stringRes(R.string.spam), modifier = Size15Modifier, tint = diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/nip43/RelayMembersScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/nip43/RelayMembersScreen.kt index 22ee60b46..2c3197b6e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/nip43/RelayMembersScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/nip43/RelayMembersScreen.kt @@ -33,12 +33,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.automirrored.filled.ExitToApp -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.People -import androidx.compose.material.icons.filled.PersonAdd import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.CircularProgressIndicator @@ -65,6 +59,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.note.UserCompose import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @@ -138,7 +134,7 @@ fun RelayMembersScreen( navigationIcon = { IconButton(onClick = { nav.popBack() }) { Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, + symbol = MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = null, ) } @@ -191,7 +187,7 @@ fun RelayMembersScreen( horizontalAlignment = Alignment.CenterHorizontally, ) { Icon( - imageVector = Icons.Default.People, + symbol = MaterialSymbols.People, contentDescription = null, modifier = Modifier.size(48.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant, @@ -247,7 +243,7 @@ fun MembershipActions( if (isMember) { Row(verticalAlignment = Alignment.CenterVertically) { Icon( - imageVector = Icons.Default.CheckCircle, + symbol = MaterialSymbols.CheckCircle, contentDescription = null, tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(20.dp), @@ -273,7 +269,7 @@ fun MembershipActions( colors = ButtonDefaults.outlinedButtonColors(contentColor = MaterialTheme.colorScheme.error), ) { Icon( - imageVector = Icons.AutoMirrored.Filled.ExitToApp, + symbol = MaterialSymbols.AutoMirrored.ExitToApp, contentDescription = null, modifier = Modifier.size(18.dp), ) @@ -291,7 +287,7 @@ fun MembershipActions( } else { Button(onClick = onJoinRequest) { Icon( - imageVector = Icons.Default.PersonAdd, + symbol = MaterialSymbols.PersonAdd, contentDescription = null, modifier = Modifier.size(18.dp), ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/nip86/RelayManagementScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/nip86/RelayManagementScreen.kt index 5c6346fdc..24a31f6ea 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/nip86/RelayManagementScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/nip86/RelayManagementScreen.kt @@ -38,12 +38,6 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Block -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.Close -import androidx.compose.material.icons.filled.Delete import androidx.compose.material3.AlertDialog import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults @@ -82,6 +76,8 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.Amethyst import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.nip05DnsIdentifiers.Nip05State import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.User @@ -212,7 +208,7 @@ fun RelayManagementScreen( verticalArrangement = Arrangement.Center, ) { Icon( - Icons.Default.Block, + MaterialSymbols.Block, contentDescription = null, modifier = Modifier.size(48.dp), tint = MaterialTheme.colorScheme.error, @@ -476,7 +472,7 @@ private fun PubkeyUserCard( if (showRemove) { IconButton(onClick = onRemove) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = stringResource(R.string.relay_management_remove), tint = MaterialTheme.colorScheme.error, ) @@ -766,7 +762,7 @@ private fun SectionHeaderWithAdd( if (showAdd) { IconButton(onClick = onAdd) { Icon( - Icons.Default.Add, + MaterialSymbols.Add, contentDescription = stringResource(R.string.relay_management_add), tint = MaterialTheme.colorScheme.primary, ) @@ -821,7 +817,7 @@ private fun HexEntryCard( if (showRemove) { IconButton(onClick = onRemove) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = stringResource(R.string.relay_management_remove), tint = MaterialTheme.colorScheme.error, ) @@ -866,7 +862,7 @@ private fun ModerationEventCard( if (canAllow) { IconButton(onClick = onAllow) { Icon( - Icons.Default.CheckCircle, + MaterialSymbols.CheckCircle, contentDescription = stringResource(R.string.relay_management_allow), tint = MaterialTheme.colorScheme.primary, ) @@ -875,7 +871,7 @@ private fun ModerationEventCard( if (canBan) { IconButton(onClick = onBan) { Icon( - Icons.Default.Block, + MaterialSymbols.Block, contentDescription = stringResource(R.string.relay_management_ban), tint = MaterialTheme.colorScheme.error, ) @@ -912,7 +908,7 @@ private fun KindEntryCard( if (showRemove) { IconButton(onClick = onRemove) { Icon( - Icons.Default.Delete, + MaterialSymbols.Delete, contentDescription = stringResource(R.string.relay_management_remove), tint = MaterialTheme.colorScheme.error, ) @@ -955,7 +951,7 @@ private fun IpEntryCard( if (showRemove) { IconButton(onClick = onRemove) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = stringResource(R.string.relay_management_remove), tint = MaterialTheme.colorScheme.error, ) @@ -1119,7 +1115,7 @@ private fun SelectedUserRow( } IconButton(onClick = onClear) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = stringResource(R.string.relay_management_remove), modifier = Modifier.size(20.dp), ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/vanish/RequestToVanishScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/vanish/RequestToVanishScreen.kt index a37dd09d9..8a2db7127 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/vanish/RequestToVanishScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/vanish/RequestToVanishScreen.kt @@ -32,10 +32,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.CalendarMonth -import androidx.compose.material.icons.outlined.DeleteForever -import androidx.compose.material.icons.outlined.Warning import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults @@ -70,6 +66,8 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.Amethyst import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.nip11RelayInfo.Nip11CachedRetriever import com.vitorpamplona.amethyst.ui.components.TitleExplainer import com.vitorpamplona.amethyst.ui.navigation.navs.EmptyNav @@ -240,7 +238,7 @@ fun RequestToVanishScreen( verticalAlignment = Alignment.Top, ) { Icon( - imageVector = Icons.Outlined.Warning, + symbol = MaterialSymbols.Warning, contentDescription = null, tint = MaterialTheme.colorScheme.error, modifier = Modifier.size(24.dp), @@ -286,7 +284,7 @@ fun RequestToVanishScreen( verticalAlignment = Alignment.CenterVertically, ) { Icon( - Icons.Outlined.CalendarMonth, + MaterialSymbols.CalendarMonth, contentDescription = stringRes(R.string.vanish_select_date), ) Spacer(Modifier.width(12.dp)) @@ -327,7 +325,7 @@ fun RequestToVanishScreen( ), ) { Icon( - Icons.Outlined.DeleteForever, + MaterialSymbols.DeleteForever, contentDescription = null, modifier = Modifier.size(20.dp), ) @@ -417,7 +415,7 @@ private fun ConfirmVanishDialog( onDismissRequest = onDismiss, icon = { Icon( - Icons.Outlined.Warning, + MaterialSymbols.Warning, contentDescription = null, tint = MaterialTheme.colorScheme.error, modifier = Modifier.size(32.dp), diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/vanish/VanishEventsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/vanish/VanishEventsScreen.kt index fbdca605d..bb977af22 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/vanish/VanishEventsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/vanish/VanishEventsScreen.kt @@ -33,12 +33,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.CheckCircle -import androidx.compose.material.icons.outlined.Error -import androidx.compose.material.icons.outlined.PublicOff -import androidx.compose.material.icons.outlined.Science -import androidx.compose.material.icons.outlined.Warning import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults @@ -59,6 +53,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.nip62Vanish.ComplianceStatus import com.vitorpamplona.amethyst.model.nip62Vanish.VanishEventItem import com.vitorpamplona.amethyst.ui.navigation.navs.INav @@ -113,7 +109,7 @@ fun VanishEventsBody( horizontalAlignment = Alignment.CenterHorizontally, ) { Icon( - Icons.Outlined.PublicOff, + MaterialSymbols.PublicOff, contentDescription = null, modifier = Modifier.size(48.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant, @@ -202,7 +198,7 @@ private fun VanishEventCard( if (item.isAllRelays) { Row(verticalAlignment = Alignment.CenterVertically) { Icon( - Icons.Outlined.Warning, + MaterialSymbols.Warning, contentDescription = null, tint = MaterialTheme.colorScheme.error, modifier = Modifier.size(16.dp), @@ -297,7 +293,7 @@ private fun RelayComplianceRow( contentPadding = ButtonDefaults.TextButtonContentPadding, ) { Icon( - Icons.Outlined.Science, + MaterialSymbols.Science, contentDescription = null, modifier = Modifier.size(16.dp), ) @@ -315,7 +311,7 @@ private fun RelayComplianceRow( ComplianceStatus.COMPLIANT -> { Icon( - Icons.Outlined.CheckCircle, + MaterialSymbols.CheckCircle, contentDescription = stringRes(R.string.vanish_compliant), tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(20.dp), @@ -330,7 +326,7 @@ private fun RelayComplianceRow( ComplianceStatus.NON_COMPLIANT -> { Icon( - Icons.Outlined.Error, + MaterialSymbols.Error, contentDescription = stringRes(R.string.vanish_non_compliant), tint = MaterialTheme.colorScheme.error, modifier = Modifier.size(20.dp), @@ -345,7 +341,7 @@ private fun RelayComplianceRow( ComplianceStatus.ERROR -> { Icon( - Icons.Outlined.Error, + MaterialSymbols.Error, contentDescription = stringRes(R.string.vanish_test_error), tint = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.size(20.dp), diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/report/ReportNoteDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/report/ReportNoteDialog.kt index 365b00b97..202200b27 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/report/ReportNoteDialog.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/report/ReportNoteDialog.kt @@ -28,9 +28,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Block -import androidx.compose.material.icons.filled.Report import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ExperimentalMaterial3Api @@ -52,13 +49,15 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.ui.components.TextSpinner import com.vitorpamplona.amethyst.ui.components.TitleExplainer @@ -122,7 +121,7 @@ fun ReportNoteDialog( SpacerH16() ActionButton( text = stringRes(R.string.report_dialog_block_hide_user_btn), - icon = Icons.Default.Block, + icon = MaterialSymbols.Block, onClick = { note.author?.let { accountViewModel.hide(it) } onDismiss() @@ -158,7 +157,7 @@ fun ReportNoteDialog( ActionButton( text = stringRes(R.string.report_dialog_post_report_btn), - icon = Icons.Default.Report, + icon = MaterialSymbols.Report, enabled = selectedReason in 0..reportTypes.lastIndex, onClick = { accountViewModel.report( @@ -189,7 +188,7 @@ private fun SectionHeader(text: String) = @Composable private fun ActionButton( text: String, - icon: ImageVector, + icon: MaterialSymbol, enabled: Boolean = true, onClick: () -> Unit, ) = Button( @@ -203,7 +202,7 @@ private fun ActionButton( horizontalArrangement = Arrangement.Center, ) { Icon( - imageVector = icon, + symbol = icon, contentDescription = null, tint = Color.White, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/search/SearchScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/search/SearchScreen.kt index 6e83e5793..27ec95a92 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/search/SearchScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/search/SearchScreen.kt @@ -39,8 +39,6 @@ import androidx.compose.foundation.selection.selectable import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Tune import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon @@ -74,6 +72,8 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.Amethyst import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.search.SearchScope import com.vitorpamplona.amethyst.commons.search.SearchSortOrder import com.vitorpamplona.amethyst.commons.search.SearchSource @@ -215,7 +215,6 @@ private fun hasNonDefaultFilters( } @OptIn(ExperimentalMaterial3Api::class) -@Suppress("AssignedValueIsNeverRead") @Composable @Suppress("AssignedValueIsNeverRead") private fun SearchFilterRow(searchBarViewModel: SearchBarViewModel) { @@ -293,7 +292,7 @@ private fun FilterIconButton( Box { IconButton(onClick = onClick) { Icon( - imageVector = Icons.Outlined.Tune, + symbol = MaterialSymbols.Tune, contentDescription = stringRes(R.string.search_filters_open), ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AllSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AllSettingsScreen.kt index acc80fe97..6facb305e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AllSettingsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AllSettingsScreen.kt @@ -28,25 +28,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.AutoAwesome -import androidx.compose.material.icons.outlined.Bolt -import androidx.compose.material.icons.outlined.CloudUpload -import androidx.compose.material.icons.outlined.Dashboard -import androidx.compose.material.icons.outlined.DeleteForever -import androidx.compose.material.icons.outlined.FavoriteBorder -import androidx.compose.material.icons.outlined.GroupAdd -import androidx.compose.material.icons.outlined.History -import androidx.compose.material.icons.outlined.Key -import androidx.compose.material.icons.outlined.MilitaryTech -import androidx.compose.material.icons.outlined.Phone -import androidx.compose.material.icons.outlined.Search -import androidx.compose.material.icons.outlined.Security -import androidx.compose.material.icons.outlined.Settings -import androidx.compose.material.icons.outlined.Sync -import androidx.compose.material.icons.outlined.ThumbUp -import androidx.compose.material.icons.outlined.Translate -import androidx.compose.material.icons.outlined.VideoSettings import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -56,12 +37,14 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.EmptyNav import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.Route @@ -107,77 +90,77 @@ fun AllSettingsScreen( HorizontalDivider() SettingsNavigationRow( title = R.string.event_sync_title, - icon = Icons.Outlined.Sync, + icon = MaterialSymbols.Sync, tint = tint, onClick = { nav.nav(Route.EventSync) }, ) HorizontalDivider() SettingsNavigationRow( title = R.string.route_import_follows, - icon = Icons.Outlined.GroupAdd, + icon = MaterialSymbols.GroupAdd, tint = tint, onClick = { nav.nav(Route.ImportFollowsSelectUser) }, ) HorizontalDivider() SettingsNavigationRow( title = R.string.media_servers, - icon = Icons.Outlined.CloudUpload, + icon = MaterialSymbols.CloudUpload, tint = tint, onClick = { nav.nav(Route.EditMediaServers) }, ) HorizontalDivider() SettingsNavigationRow( title = R.string.profile_badges_title, - icon = Icons.Outlined.MilitaryTech, + icon = MaterialSymbols.MilitaryTech, tint = tint, onClick = { nav.nav(Route.ProfileBadges) }, ) HorizontalDivider() SettingsNavigationRow( title = R.string.favorite_dvms_title, - icon = Icons.Outlined.AutoAwesome, + icon = MaterialSymbols.AutoAwesome, tint = tint, onClick = { nav.nav(Route.EditFavoriteAlgoFeeds) }, ) HorizontalDivider() SettingsNavigationRow( title = R.string.reactions, - icon = Icons.Outlined.FavoriteBorder, + icon = MaterialSymbols.FavoriteBorder, tint = tint, onClick = { nav.nav(Route.UpdateReactionType) }, ) HorizontalDivider() SettingsNavigationRow( title = R.string.video_player_settings, - icon = Icons.Outlined.VideoSettings, + icon = MaterialSymbols.VideoSettings, tint = tint, onClick = { nav.nav(Route.VideoPlayerSettings) }, ) HorizontalDivider() SettingsNavigationRow( title = R.string.zaps, - icon = Icons.Outlined.Bolt, + icon = MaterialSymbols.Bolt, tint = tint, onClick = { nav.nav(Route.UpdateZapAmount()) }, ) HorizontalDivider() SettingsNavigationRow( title = R.string.security_filters, - icon = Icons.Outlined.Security, + icon = MaterialSymbols.Security, tint = tint, onClick = { nav.nav(Route.SecurityFilters) }, ) HorizontalDivider() SettingsNavigationRow( title = R.string.call_settings, - icon = Icons.Outlined.Phone, + icon = MaterialSymbols.Phone, tint = tint, onClick = { nav.nav(Route.CallSettings) }, ) HorizontalDivider() SettingsNavigationRow( title = R.string.translations, - icon = Icons.Outlined.Translate, + icon = MaterialSymbols.Translate, tint = tint, onClick = { nav.nav(Route.UserSettings) }, ) @@ -193,35 +176,35 @@ fun AllSettingsScreen( HorizontalDivider() SettingsNavigationRow( title = R.string.ots_explorer_settings, - icon = Icons.Outlined.Search, + icon = MaterialSymbols.Search, tint = tint, onClick = { nav.nav(Route.OtsSettings) }, ) HorizontalDivider() SettingsNavigationRow( title = R.string.namecoin_settings, - icon = Icons.Outlined.Security, + icon = MaterialSymbols.Security, tint = tint, onClick = { nav.nav(Route.NamecoinSettings) }, ) HorizontalDivider() SettingsNavigationRow( title = R.string.ui_preferences, - icon = Icons.Outlined.Settings, + icon = MaterialSymbols.Settings, tint = tint, onClick = { nav.nav(Route.Settings) }, ) HorizontalDivider() SettingsNavigationRow( title = R.string.reactions_settings, - icon = Icons.Outlined.ThumbUp, + icon = MaterialSymbols.ThumbUp, tint = tint, onClick = { nav.nav(Route.ReactionsSettings) }, ) HorizontalDivider() SettingsNavigationRow( title = R.string.bottom_bar_settings, - icon = Icons.Outlined.Dashboard, + icon = MaterialSymbols.Dashboard, tint = tint, onClick = { nav.nav(Route.BottomBarSettings) }, ) @@ -230,14 +213,14 @@ fun AllSettingsScreen( accountViewModel.account.settings.keyPair.privKey?.let { SettingsNavigationRow( title = R.string.backup_keys, - icon = Icons.Outlined.Key, + icon = MaterialSymbols.Key, tint = tint, onClick = { nav.nav(Route.AccountBackup) }, ) HorizontalDivider() SettingsNavigationRow( title = R.string.request_to_vanish, - icon = Icons.Outlined.DeleteForever, + icon = MaterialSymbols.DeleteForever, tint = tint, onClick = { nav.nav(Route.RequestToVanish) }, ) @@ -245,7 +228,7 @@ fun AllSettingsScreen( } SettingsNavigationRow( title = R.string.vanish_history, - icon = Icons.Outlined.History, + icon = MaterialSymbols.History, tint = tint, onClick = { nav.nav(Route.VanishEvents) }, ) @@ -267,7 +250,7 @@ private fun SettingsSectionHeader(title: Int) { @Composable private fun SettingsNavigationRow( title: Int, - icon: ImageVector, + icon: MaterialSymbol, tint: Color, onClick: () -> Unit, ) { @@ -280,7 +263,7 @@ private fun SettingsNavigationRow( verticalAlignment = Alignment.CenterVertically, ) { Icon( - imageVector = icon, + symbol = icon, contentDescription = stringRes(title), modifier = Modifier.size(24.dp), tint = tint, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/BottomBarSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/BottomBarSettingsScreen.kt index ed97c5f8f..046b9cd32 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/BottomBarSettingsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/BottomBarSettingsScreen.kt @@ -34,8 +34,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.DragIndicator import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -62,6 +60,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.bottombars.NavBarCatalog import com.vitorpamplona.amethyst.ui.navigation.bottombars.NavBarItem import com.vitorpamplona.amethyst.ui.navigation.bottombars.NavBarItemDef @@ -349,7 +349,7 @@ private fun NavBarItemCard( ) { if (canDrag) { Icon( - Icons.Default.DragIndicator, + MaterialSymbols.DragIndicator, contentDescription = stringRes(R.string.bottom_bar_settings_reorder), modifier = Modifier.size(24.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant, @@ -369,7 +369,7 @@ private fun NavBarIconBox(def: NavBarItemDef) { val description = stringRes(def.labelRes) val tint = MaterialTheme.colorScheme.onBackground Icon( - imageVector = def.icon, + symbol = def.icon, contentDescription = description, modifier = Modifier.size(24.dp), tint = tint, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/CallSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/CallSettingsScreen.kt index 4d8fa3bb5..0daae2c1b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/CallSettingsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/CallSettingsScreen.kt @@ -30,9 +30,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Add -import androidx.compose.material.icons.outlined.Delete import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.HorizontalDivider @@ -57,6 +54,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.CallTurnServer import com.vitorpamplona.amethyst.model.CallVideoResolution import com.vitorpamplona.amethyst.ui.navigation.navs.INav @@ -334,7 +333,7 @@ private fun CustomTurnServersSection( onClick = { showAddForm = true }, modifier = Modifier.fillMaxWidth(), ) { - Icon(Icons.Outlined.Add, contentDescription = null) + Icon(MaterialSymbols.Add, contentDescription = null) Spacer(modifier = Modifier.width(8.dp)) Text(stringRes(R.string.call_settings_add_turn)) } @@ -362,7 +361,7 @@ private fun TurnServerRow( } IconButton(onClick = onDelete) { Icon( - Icons.Outlined.Delete, + MaterialSymbols.Delete, contentDescription = stringRes(R.string.call_settings_remove_turn), tint = MaterialTheme.colorScheme.error, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/NIP47SetupScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/NIP47SetupScreen.kt index eab38a637..17e7fe286 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/NIP47SetupScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/NIP47SetupScreen.kt @@ -25,8 +25,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.Delete import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon @@ -45,6 +43,8 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.actions.paymentTargets.PaymentTargetAddField import com.vitorpamplona.amethyst.ui.actions.paymentTargets.PaymentTargetsViewModel import com.vitorpamplona.amethyst.ui.navigation.navs.INav @@ -217,7 +217,7 @@ private fun PaymentTargetInlineEntry( } IconButton(onClick = onDelete) { Icon( - imageVector = Icons.Rounded.Delete, + symbol = MaterialSymbols.Delete, contentDescription = stringRes(id = R.string.delete_payment_target), ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/NamecoinSettingsSection.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/NamecoinSettingsSection.kt index 5db51d692..a1e064f8f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/NamecoinSettingsSection.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/NamecoinSettingsSection.kt @@ -37,11 +37,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Close -import androidx.compose.material.icons.filled.Lock -import androidx.compose.material.icons.filled.Refresh import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.Card @@ -74,6 +69,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.service.namecoin.NamecoinSettings import com.vitorpamplona.quartz.nip05DnsIdentifiers.namecoin.DEFAULT_ELECTRUMX_SERVERS import com.vitorpamplona.quartz.nip05DnsIdentifiers.namecoin.ElectrumxServer @@ -160,7 +157,7 @@ fun NamecoinSettingsSection( ) { TextButton(onClick = onReset) { Icon( - Icons.Default.Refresh, + MaterialSymbols.Refresh, contentDescription = null, modifier = Modifier.size(16.dp), ) @@ -542,7 +539,7 @@ private fun SectionHeader( ) { Row(verticalAlignment = Alignment.CenterVertically) { Icon( - Icons.Default.Lock, + MaterialSymbols.Lock, contentDescription = null, tint = Color(0xFF4A90D9), // Namecoin blue modifier = Modifier.size(22.dp), @@ -658,7 +655,7 @@ private fun CustomServersList( modifier = Modifier.size(28.dp), ) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = "Remove server", tint = MaterialTheme.colorScheme.error, modifier = Modifier.size(16.dp), @@ -733,7 +730,7 @@ private fun AddServerInput(onAdd: (String) -> Unit) { ), ) { Icon( - Icons.Default.Add, + MaterialSymbols.Add, contentDescription = "Add server", tint = MaterialTheme.colorScheme.primary, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/OtsSettingsSection.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/OtsSettingsSection.kt index 380c77442..a75c8a3b5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/OtsSettingsSection.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/OtsSettingsSection.kt @@ -34,10 +34,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Clear -import androidx.compose.material.icons.filled.Refresh -import androidx.compose.material.icons.outlined.Search import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -60,6 +56,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.nip03Timestamp.OtsSettings import com.vitorpamplona.quartz.nip03Timestamp.okhttp.OkHttpBitcoinExplorer @@ -119,7 +117,7 @@ fun OtsSettingsSection( ) { TextButton(onClick = onReset) { Icon( - Icons.Default.Refresh, + MaterialSymbols.Refresh, contentDescription = null, modifier = Modifier.size(16.dp), ) @@ -148,7 +146,7 @@ private fun SectionHeaderOts() { verticalAlignment = Alignment.CenterVertically, ) { Icon( - Icons.Outlined.Search, + MaterialSymbols.Search, contentDescription = null, tint = Color(0xFFF7931A), // Bitcoin orange modifier = Modifier.size(22.dp), @@ -288,7 +286,7 @@ private fun CustomExplorerInput( validationError = null }) { Icon( - Icons.Default.Clear, + MaterialSymbols.Clear, contentDescription = "Clear", modifier = Modifier.size(18.dp), ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/ReactionsSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/ReactionsSettingsScreen.kt index 6ebec3891..9d371a208 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/ReactionsSettingsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/ReactionsSettingsScreen.kt @@ -34,8 +34,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.DragIndicator import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -62,6 +60,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.ReactionRowAction import com.vitorpamplona.amethyst.model.ReactionRowItem import com.vitorpamplona.amethyst.ui.navigation.navs.EmptyNav @@ -301,7 +301,7 @@ private fun ReactionRowItemCard( contentAlignment = Alignment.CenterEnd, ) { Icon( - Icons.Default.DragIndicator, + MaterialSymbols.DragIndicator, contentDescription = stringRes(R.string.reactions_settings_reorder), modifier = Modifier.size(28.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/UserSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/UserSettingsScreen.kt index 922885d88..2f5dbf0b3 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/UserSettingsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/UserSettingsScreen.kt @@ -38,12 +38,6 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Close -import androidx.compose.material.icons.filled.Delete -import androidx.compose.material.icons.filled.Search -import androidx.compose.material.icons.filled.SwapHoriz import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -68,6 +62,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.EmptyNav import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.topbars.TopBarWithBackButton @@ -154,7 +150,7 @@ private fun SearchableLanguageList( placeholder = { Text(stringRes(R.string.search_languages)) }, leadingIcon = { Icon( - imageVector = Icons.Default.Search, + symbol = MaterialSymbols.Search, contentDescription = null, modifier = Modifier.size(20.dp), ) @@ -266,7 +262,7 @@ fun DontTranslateFromSetting(accountViewModel: AccountViewModel) { label = { Text(JavaLocale.forLanguageTag(languageCode).displayName) }, trailingIcon = { Icon( - imageVector = Icons.Default.Close, + symbol = MaterialSymbols.Close, contentDescription = stringRes(R.string.remove_language, languageCode), modifier = Modifier.size(InputChipDefaults.IconSize), ) @@ -280,7 +276,7 @@ fun DontTranslateFromSetting(accountViewModel: AccountViewModel) { label = { Text(stringRes(R.string.add_language)) }, leadingIcon = { Icon( - imageVector = Icons.Default.Add, + symbol = MaterialSymbols.Add, contentDescription = null, modifier = Modifier.size(InputChipDefaults.IconSize), ) @@ -342,7 +338,7 @@ fun LanguagePreferencesSetting(accountViewModel: AccountViewModel) { modifier = Modifier.align(Alignment.CenterHorizontally), ) { Icon( - imageVector = Icons.Default.Add, + symbol = MaterialSymbols.Add, contentDescription = null, modifier = Modifier.size(18.dp), ) @@ -375,7 +371,7 @@ private fun LanguagePreferenceCard( verticalAlignment = Alignment.CenterVertically, ) { Icon( - imageVector = Icons.Default.SwapHoriz, + symbol = MaterialSymbols.SwapHoriz, contentDescription = null, tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(20.dp), @@ -393,7 +389,7 @@ private fun LanguagePreferenceCard( modifier = Modifier.size(32.dp), ) { Icon( - imageVector = Icons.Default.Delete, + symbol = MaterialSymbols.Delete, contentDescription = stringRes(R.string.delete_preference), tint = MaterialTheme.colorScheme.error, modifier = Modifier.size(18.dp), @@ -501,7 +497,7 @@ private fun AddLanguagePairCard( } Icon( - imageVector = Icons.Default.SwapHoriz, + symbol = MaterialSymbols.SwapHoriz, contentDescription = null, tint = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.size(20.dp), diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/VideoPlayerSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/VideoPlayerSettingsScreen.kt index 6771bc235..2a1301a40 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/VideoPlayerSettingsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/VideoPlayerSettingsScreen.kt @@ -34,8 +34,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.DragIndicator import androidx.compose.material3.FilterChip import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon @@ -62,6 +60,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.VideoButtonLocation import com.vitorpamplona.amethyst.model.VideoPlayerAction import com.vitorpamplona.amethyst.model.VideoPlayerButtonItem @@ -294,7 +294,7 @@ private fun VideoPlayerButtonItemCard( contentAlignment = Alignment.CenterEnd, ) { Icon( - Icons.Default.DragIndicator, + MaterialSymbols.DragIndicator, contentDescription = stringRes(R.string.video_player_settings_reorder), modifier = Modifier.size(28.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/shorts/NewShortVideoButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/shorts/NewShortVideoButton.kt index 37f4220cc..f8c5a9a59 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/shorts/NewShortVideoButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/shorts/NewShortVideoButton.kt @@ -30,10 +30,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AddPhotoAlternate -import androidx.compose.material.icons.filled.Videocam -import androidx.compose.material.icons.outlined.Close import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -48,6 +44,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.actions.NewMediaModel import com.vitorpamplona.amethyst.ui.actions.NewMediaView import com.vitorpamplona.amethyst.ui.actions.uploads.GallerySelect @@ -129,7 +127,7 @@ fun NewShortVideoButton( containerColor = MaterialTheme.colorScheme.primary, ) { Icon( - imageVector = Icons.Default.Videocam, + symbol = MaterialSymbols.Videocam, contentDescription = stringRes(id = R.string.record_a_video), modifier = Modifier.size(26.dp), tint = Color.White, @@ -148,7 +146,7 @@ fun NewShortVideoButton( containerColor = MaterialTheme.colorScheme.primary, ) { Icon( - imageVector = Icons.Default.AddPhotoAlternate, + symbol = MaterialSymbols.AddPhotoAlternate, contentDescription = stringRes(id = R.string.upload_image), modifier = Modifier.size(26.dp), tint = Color.White, @@ -171,7 +169,7 @@ fun NewShortVideoButton( exit = fadeOut(), ) { Icon( - imageVector = Icons.Outlined.Close, + symbol = MaterialSymbols.Close, contentDescription = stringRes(id = R.string.new_short_video), modifier = Size26Modifier, tint = Color.White, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/NewImageButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/NewImageButton.kt index eae80cea2..abd23e7cf 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/NewImageButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/NewImageButton.kt @@ -30,11 +30,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AddPhotoAlternate -import androidx.compose.material.icons.filled.CameraAlt -import androidx.compose.material.icons.filled.Videocam -import androidx.compose.material.icons.outlined.Close import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -49,6 +44,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.actions.NewMediaModel import com.vitorpamplona.amethyst.ui.actions.NewMediaView import com.vitorpamplona.amethyst.ui.actions.uploads.GallerySelect @@ -144,7 +141,7 @@ fun NewImageButton( containerColor = MaterialTheme.colorScheme.primary, ) { Icon( - imageVector = Icons.Default.CameraAlt, + symbol = MaterialSymbols.CameraAlt, contentDescription = stringRes(id = R.string.take_a_picture), modifier = Modifier.size(26.dp), tint = Color.White, @@ -163,7 +160,7 @@ fun NewImageButton( containerColor = MaterialTheme.colorScheme.primary, ) { Icon( - imageVector = Icons.Default.Videocam, + symbol = MaterialSymbols.Videocam, contentDescription = stringRes(id = R.string.record_a_video), modifier = Modifier.size(26.dp), tint = Color.White, @@ -182,7 +179,7 @@ fun NewImageButton( containerColor = MaterialTheme.colorScheme.primary, ) { Icon( - imageVector = Icons.Default.AddPhotoAlternate, + symbol = MaterialSymbols.AddPhotoAlternate, contentDescription = stringRes(id = R.string.upload_image), modifier = Modifier.size(26.dp), tint = Color.White, @@ -207,7 +204,7 @@ fun NewImageButton( exit = fadeOut(), ) { Icon( - imageVector = Icons.Outlined.Close, + symbol = MaterialSymbols.Close, contentDescription = stringRes(id = R.string.new_short), modifier = Size26Modifier, tint = Color.White, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/hls/NewHlsVideoScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/hls/NewHlsVideoScreen.kt index 1cfba55ba..e739c87f3 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/hls/NewHlsVideoScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/hls/NewHlsVideoScreen.kt @@ -42,10 +42,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.Error -import androidx.compose.material.icons.filled.VideoLibrary import androidx.compose.material3.Button import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults @@ -83,6 +79,8 @@ import androidx.lifecycle.viewmodel.compose.viewModel import com.davotoula.lightcompressor.hls.HlsLadder import com.davotoula.lightcompressor.utils.CompressorUtils import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.components.TextSpinner import com.vitorpamplona.amethyst.ui.components.TitleExplainer import com.vitorpamplona.amethyst.ui.navigation.navs.INav @@ -221,7 +219,7 @@ private fun EmptyPickVideoCard(onClick: () -> Unit) { horizontalAlignment = Alignment.CenterHorizontally, ) { Icon( - imageVector = Icons.Default.VideoLibrary, + symbol = MaterialSymbols.VideoLibrary, contentDescription = null, modifier = Modifier.size(48.dp), tint = MaterialTheme.colorScheme.primary, @@ -249,7 +247,7 @@ private fun PickedVideoCard( verticalAlignment = Alignment.CenterVertically, ) { Icon( - imageVector = Icons.Default.VideoLibrary, + symbol = MaterialSymbols.VideoLibrary, contentDescription = null, tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(32.dp), @@ -616,7 +614,7 @@ private fun PhaseRow( when { done -> { Icon( - imageVector = Icons.Default.CheckCircle, + symbol = MaterialSymbols.CheckCircle, contentDescription = null, tint = Color(0xFF22C55E), modifier = Modifier.size(20.dp), @@ -665,7 +663,7 @@ private fun SuccessBody( verticalArrangement = Arrangement.Center, ) { Icon( - imageVector = Icons.Default.CheckCircle, + symbol = MaterialSymbols.CheckCircle, contentDescription = null, modifier = Modifier.size(72.dp), tint = Color(0xFF22C55E), @@ -748,7 +746,7 @@ private fun FailureBody( verticalArrangement = Arrangement.Center, ) { Icon( - imageVector = Icons.Default.Error, + symbol = MaterialSymbols.Error, contentDescription = null, modifier = Modifier.size(72.dp), tint = MaterialTheme.colorScheme.error, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/AddWalletScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/AddWalletScreen.kt index 20a318bdd..8b9997478 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/AddWalletScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/AddWalletScreen.kt @@ -29,10 +29,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.outlined.Add -import androidx.compose.material.icons.outlined.ContentPaste import androidx.compose.material3.Button import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -56,6 +52,8 @@ import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.components.util.getText import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.painterRes @@ -94,7 +92,7 @@ fun AddWalletScreen( navigationIcon = { IconButton(onClick = { nav.popBack() }) { Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, + symbol = MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = stringRes(R.string.back), ) } @@ -144,7 +142,7 @@ fun AddWalletScreen( }, ) { Icon( - imageVector = Icons.Outlined.Add, + symbol = MaterialSymbols.Add, contentDescription = null, modifier = Modifier.size(18.dp), ) @@ -167,7 +165,7 @@ fun AddWalletScreen( }, ) { Icon( - imageVector = Icons.Outlined.ContentPaste, + symbol = MaterialSymbols.ContentPaste, contentDescription = stringRes(id = R.string.paste_from_clipboard), modifier = Size24Modifier, tint = MaterialTheme.colorScheme.primary, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletDetailScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletDetailScreen.kt index 606add251..27d528fd6 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletDetailScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletDetailScreen.kt @@ -31,11 +31,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.automirrored.filled.List -import androidx.compose.material.icons.filled.ArrowDownward -import androidx.compose.material.icons.filled.ArrowUpward import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.CircularProgressIndicator @@ -59,6 +54,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.Route import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @@ -95,7 +92,7 @@ fun WalletDetailScreen( navigationIcon = { IconButton(onClick = { nav.popBack() }) { Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, + symbol = MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = stringRes(R.string.back), ) } @@ -166,7 +163,7 @@ fun WalletDetailScreen( ), ) { Icon( - imageVector = Icons.Filled.ArrowDownward, + symbol = MaterialSymbols.ArrowDownward, contentDescription = null, modifier = Modifier.size(20.dp), ) @@ -183,7 +180,7 @@ fun WalletDetailScreen( shape = RoundedCornerShape(16.dp), ) { Icon( - imageVector = Icons.Filled.ArrowUpward, + symbol = MaterialSymbols.ArrowUpward, contentDescription = null, modifier = Modifier.size(20.dp), ) @@ -204,7 +201,7 @@ fun WalletDetailScreen( shape = RoundedCornerShape(16.dp), ) { Icon( - imageVector = Icons.AutoMirrored.Filled.List, + symbol = MaterialSymbols.AutoMirrored.List, contentDescription = null, modifier = Modifier.size(20.dp), ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletReceiveScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletReceiveScreen.kt index af1a106c2..b08b09a1f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletReceiveScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletReceiveScreen.kt @@ -35,9 +35,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.filled.ContentCopy import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api @@ -67,6 +64,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.screen.loggedIn.qrcode.QrCodeDrawer @@ -101,7 +100,7 @@ fun WalletReceiveScreen( navigationIcon = { IconButton(onClick = { nav.popBack() }) { Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, + symbol = MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = stringRes(R.string.back), ) } @@ -233,7 +232,7 @@ fun WalletReceiveScreen( shape = RoundedCornerShape(16.dp), ) { Icon( - imageVector = Icons.Filled.ContentCopy, + symbol = MaterialSymbols.ContentCopy, contentDescription = null, modifier = Modifier.size(18.dp), ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletScreen.kt index d1a5a7e3f..7e81e0ebf 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletScreen.kt @@ -35,15 +35,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Check -import androidx.compose.material.icons.filled.Delete -import androidx.compose.material.icons.filled.Edit -import androidx.compose.material.icons.filled.KeyboardArrowDown -import androidx.compose.material.icons.filled.KeyboardArrowUp -import androidx.compose.material.icons.filled.Star import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.Card @@ -74,6 +65,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.Route import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @@ -98,7 +91,7 @@ fun WalletScreen( navigationIcon = { IconButton(onClick = { nav.popBack() }) { Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, + symbol = MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = stringRes(R.string.back), ) } @@ -106,7 +99,7 @@ fun WalletScreen( actions = { IconButton(onClick = { nav.nav(Route.WalletAdd) }) { Icon( - imageVector = Icons.Filled.Add, + symbol = MaterialSymbols.Add, contentDescription = stringRes(R.string.wallet_add), ) } @@ -156,7 +149,7 @@ private fun NoWalletSetup( ) Spacer(modifier = Modifier.height(24.dp)) Button(onClick = { nav.nav(Route.WalletAdd) }) { - Icon(Icons.Filled.Add, contentDescription = null, modifier = Modifier.size(18.dp)) + Icon(MaterialSymbols.Add, contentDescription = null, modifier = Modifier.size(18.dp)) Spacer(modifier = Modifier.width(8.dp)) Text(stringRes(R.string.wallet_add_connection)) } @@ -231,7 +224,7 @@ private fun MultiWalletHomeContent( .height(48.dp), shape = RoundedCornerShape(12.dp), ) { - Icon(Icons.Filled.Add, contentDescription = null, modifier = Modifier.size(18.dp)) + Icon(MaterialSymbols.Add, contentDescription = null, modifier = Modifier.size(18.dp)) Spacer(modifier = Modifier.width(8.dp)) Text(stringRes(R.string.wallet_add)) } @@ -327,7 +320,7 @@ private fun WalletCard( if (walletInfo.isDefault) { Spacer(modifier = Modifier.width(8.dp)) Icon( - imageVector = Icons.Filled.Star, + symbol = MaterialSymbols.Star, contentDescription = stringRes(R.string.wallet_default), modifier = Modifier.size(16.dp), tint = MaterialTheme.colorScheme.primary, @@ -352,7 +345,7 @@ private fun WalletCard( modifier = Modifier.size(28.dp), ) { Icon( - Icons.Filled.KeyboardArrowUp, + MaterialSymbols.KeyboardArrowUp, contentDescription = stringRes(R.string.wallet_move_up), modifier = Modifier.size(20.dp), ) @@ -363,7 +356,7 @@ private fun WalletCard( modifier = Modifier.size(28.dp), ) { Icon( - Icons.Filled.KeyboardArrowDown, + MaterialSymbols.KeyboardArrowDown, contentDescription = stringRes(R.string.wallet_move_down), modifier = Modifier.size(20.dp), ) @@ -418,7 +411,7 @@ private fun WalletCard( modifier = Modifier.height(36.dp), shape = RoundedCornerShape(8.dp), ) { - Icon(Icons.Filled.Check, contentDescription = null, modifier = Modifier.size(14.dp)) + Icon(MaterialSymbols.Check, contentDescription = null, modifier = Modifier.size(14.dp)) Spacer(modifier = Modifier.width(4.dp)) Text(stringRes(R.string.wallet_set_default), style = MaterialTheme.typography.bodySmall) } @@ -429,7 +422,7 @@ private fun WalletCard( modifier = Modifier.height(36.dp), shape = RoundedCornerShape(8.dp), ) { - Icon(Icons.Filled.Edit, contentDescription = null, modifier = Modifier.size(14.dp)) + Icon(MaterialSymbols.Edit, contentDescription = null, modifier = Modifier.size(14.dp)) Spacer(modifier = Modifier.width(4.dp)) Text(stringRes(R.string.wallet_rename), style = MaterialTheme.typography.bodySmall) } @@ -441,7 +434,7 @@ private fun WalletCard( modifier = Modifier.size(36.dp), ) { Icon( - Icons.Filled.Delete, + MaterialSymbols.Delete, contentDescription = stringRes(R.string.wallet_remove), modifier = Modifier.size(18.dp), tint = MaterialTheme.colorScheme.error, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletSendScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletSendScreen.kt index 35cc4a696..5747633ea 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletSendScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletSendScreen.kt @@ -31,10 +31,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.ContentPaste import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api @@ -60,6 +56,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.stringRes @@ -91,7 +89,7 @@ fun WalletSendScreen( navigationIcon = { IconButton(onClick = { nav.popBack() }) { Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, + symbol = MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = stringRes(R.string.back), ) } @@ -128,7 +126,7 @@ fun WalletSendScreen( } }) { Icon( - imageVector = Icons.Filled.ContentPaste, + symbol = MaterialSymbols.ContentPaste, contentDescription = "Paste", ) } @@ -171,7 +169,7 @@ fun WalletSendScreen( is SendState.Success -> { Spacer(modifier = Modifier.weight(1f)) Icon( - imageVector = Icons.Filled.CheckCircle, + symbol = MaterialSymbols.CheckCircle, contentDescription = null, modifier = Modifier.size(64.dp), tint = MaterialTheme.colorScheme.primary, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletTransactionsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletTransactionsScreen.kt index 8d580d10d..acdf3e939 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletTransactionsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletTransactionsScreen.kt @@ -33,11 +33,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.filled.ArrowDownward -import androidx.compose.material.icons.filled.ArrowUpward -import androidx.compose.material.icons.filled.Refresh import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FilterChip @@ -61,6 +56,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.note.UserPicture import com.vitorpamplona.amethyst.ui.note.UsernameDisplay @@ -119,7 +116,7 @@ fun WalletTransactionsScreen( navigationIcon = { IconButton(onClick = { nav.popBack() }) { Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, + symbol = MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = stringRes(R.string.back), ) } @@ -127,7 +124,7 @@ fun WalletTransactionsScreen( actions = { IconButton(onClick = { walletViewModel.fetchTransactions() }) { Icon( - imageVector = Icons.Filled.Refresh, + symbol = MaterialSymbols.Refresh, contentDescription = stringRes(R.string.wallet_refresh), ) } @@ -295,8 +292,7 @@ private fun TransactionItem( Spacer(modifier = Modifier.width(12.dp)) } else { Icon( - imageVector = - if (isIncoming) Icons.Filled.ArrowDownward else Icons.Filled.ArrowUpward, + symbol = if (isIncoming) MaterialSymbols.ArrowDownward else MaterialSymbols.ArrowUpward, contentDescription = if (isIncoming) { stringRes(R.string.wallet_incoming) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/webBookmarks/WebBookmarksScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/webBookmarks/WebBookmarksScreen.kt index 1fee93c83..491bf62fa 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/webBookmarks/WebBookmarksScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/webBookmarks/WebBookmarksScreen.kt @@ -33,11 +33,6 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Delete -import androidx.compose.material.icons.filled.Edit -import androidx.compose.material.icons.filled.OpenInBrowser import androidx.compose.material3.AlertDialog import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api @@ -70,6 +65,8 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil3.compose.AsyncImage import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.ui.feeds.FeedContentState import com.vitorpamplona.amethyst.commons.ui.feeds.FeedState import com.vitorpamplona.amethyst.model.Note @@ -148,7 +145,7 @@ private fun RenderWebBookmarksScreen( containerColor = MaterialTheme.colorScheme.primary, ) { Icon( - imageVector = Icons.Default.Add, + symbol = MaterialSymbols.Add, contentDescription = stringResource(R.string.web_bookmark_add_title), ) } @@ -304,19 +301,19 @@ private fun WebBookmarkCard( Row { IconButton(onClick = { uriHandler.openUri(event.url()) }) { Icon( - imageVector = Icons.Default.OpenInBrowser, + symbol = MaterialSymbols.OpenInBrowser, contentDescription = stringResource(R.string.web_bookmark_open_url), ) } IconButton(onClick = { showEditDialog = true }) { Icon( - imageVector = Icons.Default.Edit, + symbol = MaterialSymbols.Edit, contentDescription = stringResource(R.string.web_bookmark_edit_title), ) } IconButton(onClick = { showDeleteDialog = true }) { Icon( - imageVector = Icons.Default.Delete, + symbol = MaterialSymbols.Delete, contentDescription = stringResource(R.string.web_bookmark_delete), tint = MaterialTheme.colorScheme.error, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/login/KeyTextField.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/login/KeyTextField.kt index 24e85b586..d0664847b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/login/KeyTextField.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/login/KeyTextField.kt @@ -24,9 +24,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.size import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Visibility -import androidx.compose.material.icons.outlined.VisibilityOff import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -48,6 +45,8 @@ import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.painterRes import com.vitorpamplona.amethyst.ui.screen.loggedIn.qrcode.SimpleQrCodeScanner import com.vitorpamplona.amethyst.ui.stringRes @@ -85,8 +84,7 @@ fun KeyTextField( Row { IconButton(onClick = { showCharsKey = !showCharsKey }) { Icon( - imageVector = - if (showCharsKey) Icons.Outlined.VisibilityOff else Icons.Outlined.Visibility, + symbol = if (showCharsKey) MaterialSymbols.VisibilityOff else MaterialSymbols.Visibility, contentDescription = if (showCharsKey) { stringRes(R.string.show_password) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/login/LoginScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/login/LoginScreen.kt index bb3809b27..29297223b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/login/LoginScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedOff/login/LoginScreen.kt @@ -36,9 +36,6 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Visibility -import androidx.compose.material.icons.outlined.VisibilityOff import androidx.compose.material3.Checkbox import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -73,6 +70,8 @@ import com.vitorpamplona.amethyst.Amethyst import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.commons.hashtags.Amethyst import com.vitorpamplona.amethyst.commons.hashtags.CustomHashTagIcons +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.ui.screen.AccountSessionManager import com.vitorpamplona.amethyst.ui.screen.loggedOff.AcceptTerms import com.vitorpamplona.amethyst.ui.screen.loggedOff.TorSettingsSetup @@ -311,8 +310,7 @@ fun PasswordField( Row { IconButton(onClick = { showCharsPassword = !showCharsPassword }) { Icon( - imageVector = - if (showCharsPassword) Icons.Outlined.VisibilityOff else Icons.Outlined.Visibility, + symbol = if (showCharsPassword) MaterialSymbols.VisibilityOff else MaterialSymbols.Visibility, contentDescription = if (showCharsPassword) { stringRes(R.string.show_password) diff --git a/amethyst/src/play/java/com/vitorpamplona/amethyst/ui/components/TranslatableRichTextViewer.kt b/amethyst/src/play/java/com/vitorpamplona/amethyst/ui/components/TranslatableRichTextViewer.kt index 697583552..3ec494bc7 100644 --- a/amethyst/src/play/java/com/vitorpamplona/amethyst/ui/components/TranslatableRichTextViewer.kt +++ b/amethyst/src/play/java/com/vitorpamplona/amethyst/ui/components/TranslatableRichTextViewer.kt @@ -25,8 +25,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Check import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.HorizontalDivider @@ -51,6 +49,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.core.os.ConfigurationCompat import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.ImmutableListOfLists import com.vitorpamplona.amethyst.service.lang.LanguageTranslatorService import com.vitorpamplona.amethyst.service.lang.TranslationsCache @@ -200,7 +200,7 @@ private fun TranslationMessage( Row(verticalAlignment = Alignment.CenterVertically) { if (source in accountViewModel.dontTranslateFrom()) { Icon( - imageVector = Icons.Default.Check, + symbol = MaterialSymbols.Check, contentDescription = null, modifier = Modifier.size(24.dp), ) @@ -229,7 +229,7 @@ private fun TranslationMessage( Row(verticalAlignment = Alignment.CenterVertically) { if (accountViewModel.account.settings.preferenceBetween(source, target) == source) { Icon( - imageVector = Icons.Default.Check, + symbol = MaterialSymbols.Check, contentDescription = null, modifier = Modifier.size(24.dp), ) @@ -259,7 +259,7 @@ private fun TranslationMessage( .preferenceBetween(source, target) == target ) { Icon( - imageVector = Icons.Default.Check, + symbol = MaterialSymbols.Check, contentDescription = null, modifier = Modifier.size(24.dp), ) @@ -294,7 +294,7 @@ private fun TranslationMessage( Row(verticalAlignment = Alignment.CenterVertically) { if (accountViewModel.account.settings.translateToContains(lang.language)) { Icon( - imageVector = Icons.Default.Check, + symbol = MaterialSymbols.Check, contentDescription = null, modifier = Modifier.size(24.dp), ) diff --git a/commons/build.gradle.kts b/commons/build.gradle.kts index 56ec463bd..9aef031e7 100644 --- a/commons/build.gradle.kts +++ b/commons/build.gradle.kts @@ -53,7 +53,6 @@ kotlin { implementation(libs.jetbrains.compose.foundation) implementation(libs.jetbrains.compose.runtime) implementation(libs.jetbrains.compose.material3) - implementation(libs.jetbrains.compose.material.icons.extended) implementation(libs.jetbrains.compose.ui.tooling.preview) // Lifecycle ViewModel (KMP since 2.8.0) diff --git a/commons/src/commonMain/composeResources/font/material_symbols_outlined.ttf b/commons/src/commonMain/composeResources/font/material_symbols_outlined.ttf new file mode 100644 index 000000000..a8166fc2d Binary files /dev/null and b/commons/src/commonMain/composeResources/font/material_symbols_outlined.ttf differ diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessBroadcastBanner.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessBroadcastBanner.kt index e876cfe80..456afe8b9 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessBroadcastBanner.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessBroadcastBanner.kt @@ -38,12 +38,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.CloudSync -import androidx.compose.material.icons.filled.Error -import androidx.compose.material.icons.filled.HourglassBottom -import androidx.compose.material.icons.filled.Sync import androidx.compose.material3.Icon import androidx.compose.material3.LinearProgressIndicator import androidx.compose.material3.MaterialTheme @@ -54,9 +48,11 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols /** * Shared banner showing chess broadcast status - broadcast progress, sync status, etc. @@ -93,7 +89,7 @@ fun ChessBroadcastBanner( .animateContentSize(), ) { Icon( - imageVector = getStatusIcon(status), + symbol = getStatusIcon(status), contentDescription = null, tint = getStatusIconColor(status), modifier = Modifier.size(18.dp), @@ -162,15 +158,15 @@ private fun getStatusBackgroundColor(status: ChessBroadcastStatus): Color = } } -private fun getStatusIcon(status: ChessBroadcastStatus): ImageVector = +private fun getStatusIcon(status: ChessBroadcastStatus): MaterialSymbol = when (status) { - is ChessBroadcastStatus.Broadcasting -> Icons.Default.Sync - is ChessBroadcastStatus.Success -> Icons.Default.CheckCircle - is ChessBroadcastStatus.Failed -> Icons.Default.Error - is ChessBroadcastStatus.WaitingForOpponent -> Icons.Default.HourglassBottom - is ChessBroadcastStatus.Syncing -> Icons.Default.CloudSync - is ChessBroadcastStatus.Desynced -> Icons.Default.Error - is ChessBroadcastStatus.Idle -> Icons.Default.CheckCircle + is ChessBroadcastStatus.Broadcasting -> MaterialSymbols.Sync + is ChessBroadcastStatus.Success -> MaterialSymbols.CheckCircle + is ChessBroadcastStatus.Failed -> MaterialSymbols.Error + is ChessBroadcastStatus.WaitingForOpponent -> MaterialSymbols.HourglassBottom + is ChessBroadcastStatus.Syncing -> MaterialSymbols.CloudSync + is ChessBroadcastStatus.Desynced -> MaterialSymbols.Error + is ChessBroadcastStatus.Idle -> MaterialSymbols.CheckCircle } @Composable diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessLobbyCards.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessLobbyCards.kt index afcae46a8..bb22958ce 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessLobbyCards.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessLobbyCards.kt @@ -27,8 +27,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Close import androidx.compose.material3.Button import androidx.compose.material3.Card import androidx.compose.material3.Icon @@ -43,6 +41,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.quartz.nip64Chess.ChessGameNameGenerator // Color constants for card borders @@ -348,7 +348,7 @@ fun CompletedGameCard( if (onDismiss != null) { IconButton(onClick = onDismiss) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = "Dismiss", tint = MaterialTheme.colorScheme.onSurfaceVariant, ) diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessSyncBanner.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessSyncBanner.kt index e449e838c..094409e2b 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessSyncBanner.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/ChessSyncBanner.kt @@ -40,14 +40,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.CloudDownload -import androidx.compose.material.icons.filled.Error -import androidx.compose.material.icons.filled.ExpandLess -import androidx.compose.material.icons.filled.ExpandMore -import androidx.compose.material.icons.filled.HourglassEmpty -import androidx.compose.material.icons.filled.Warning import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.LinearProgressIndicator @@ -62,9 +54,11 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols /** * Shared banner showing chess sync/subscription status with expandable relay details. @@ -109,7 +103,7 @@ fun ChessSyncBanner( modifier = Modifier.padding(horizontal = 16.dp, vertical = 10.dp), ) { Icon( - imageVector = getSyncStatusIcon(status), + symbol = getSyncStatusIcon(status), contentDescription = null, tint = getSyncStatusIconColor(status), modifier = Modifier.size(18.dp), @@ -160,7 +154,7 @@ fun ChessSyncBanner( // Expand/collapse icon if (status !is ChessSyncStatus.Idle && getRelayStates(status).isNotEmpty()) { Icon( - imageVector = if (isExpanded) Icons.Default.ExpandLess else Icons.Default.ExpandMore, + symbol = if (isExpanded) MaterialSymbols.ExpandLess else MaterialSymbols.ExpandMore, contentDescription = if (isExpanded) "Collapse" else "Expand", tint = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.size(20.dp), @@ -213,7 +207,7 @@ private fun RelayStatusRow(relay: RelaySyncState) { modifier = Modifier.fillMaxWidth(), ) { Icon( - imageVector = getRelayStatusIcon(relay.status), + symbol = getRelayStatusIcon(relay.status), contentDescription = null, tint = getRelayStatusColor(relay.status), modifier = Modifier.size(14.dp), @@ -244,13 +238,13 @@ private fun getRelayStates(status: ChessSyncStatus): List = is ChessSyncStatus.Idle -> emptyList() } -private fun getRelayStatusIcon(status: RelaySyncStatus): ImageVector = +private fun getRelayStatusIcon(status: RelaySyncStatus): MaterialSymbol = when (status) { - RelaySyncStatus.CONNECTING -> Icons.Default.HourglassEmpty - RelaySyncStatus.WAITING -> Icons.Default.HourglassEmpty - RelaySyncStatus.RECEIVING -> Icons.Default.CloudDownload - RelaySyncStatus.EOSE_RECEIVED -> Icons.Default.CheckCircle - RelaySyncStatus.FAILED -> Icons.Default.Error + RelaySyncStatus.CONNECTING -> MaterialSymbols.HourglassEmpty + RelaySyncStatus.WAITING -> MaterialSymbols.HourglassEmpty + RelaySyncStatus.RECEIVING -> MaterialSymbols.CloudDownload + RelaySyncStatus.EOSE_RECEIVED -> MaterialSymbols.CheckCircle + RelaySyncStatus.FAILED -> MaterialSymbols.Error } @Composable @@ -271,12 +265,12 @@ private fun getSyncStatusBackgroundColor(status: ChessSyncStatus): Color = else -> MaterialTheme.colorScheme.surfaceContainer } -private fun getSyncStatusIcon(status: ChessSyncStatus): ImageVector = +private fun getSyncStatusIcon(status: ChessSyncStatus): MaterialSymbol = when (status) { - is ChessSyncStatus.Syncing -> Icons.Default.CloudDownload - is ChessSyncStatus.Synced -> Icons.Default.CheckCircle - is ChessSyncStatus.PartialSync -> Icons.Default.Warning - is ChessSyncStatus.Idle -> Icons.Default.CheckCircle + is ChessSyncStatus.Syncing -> MaterialSymbols.CloudDownload + is ChessSyncStatus.Synced -> MaterialSymbols.CheckCircle + is ChessSyncStatus.PartialSync -> MaterialSymbols.Warning + is ChessSyncStatus.Idle -> MaterialSymbols.CheckCircle } @Composable diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/MoveNavigator.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/MoveNavigator.kt index 0f5cb9693..04c29446d 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/MoveNavigator.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/chess/MoveNavigator.kt @@ -24,11 +24,6 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.KeyboardArrowLeft -import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight -import androidx.compose.material.icons.filled.SkipNext -import androidx.compose.material.icons.filled.SkipPrevious import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -37,6 +32,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols /** * Move navigation controls for stepping through chess game positions @@ -65,7 +62,7 @@ fun MoveNavigator( enabled = currentMove > 0, ) { Icon( - Icons.Default.SkipPrevious, + MaterialSymbols.SkipPrevious, contentDescription = "Start position", tint = if (currentMove > 0) { @@ -82,7 +79,7 @@ fun MoveNavigator( enabled = currentMove > 0, ) { Icon( - Icons.AutoMirrored.Filled.KeyboardArrowLeft, + MaterialSymbols.AutoMirrored.KeyboardArrowLeft, contentDescription = "Previous move", tint = if (currentMove > 0) { @@ -106,7 +103,7 @@ fun MoveNavigator( enabled = currentMove < totalMoves, ) { Icon( - Icons.AutoMirrored.Filled.KeyboardArrowRight, + MaterialSymbols.AutoMirrored.KeyboardArrowRight, contentDescription = "Next move", tint = if (currentMove < totalMoves) { @@ -123,7 +120,7 @@ fun MoveNavigator( enabled = currentMove < totalMoves, ) { Icon( - Icons.Default.SkipNext, + MaterialSymbols.SkipNext, contentDescription = "Final position", tint = if (currentMove < totalMoves) { diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/compose/editor/MarkdownToolbar.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/compose/editor/MarkdownToolbar.kt index d6b977914..287996464 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/compose/editor/MarkdownToolbar.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/compose/editor/MarkdownToolbar.kt @@ -25,18 +25,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.FormatListBulleted -import androidx.compose.material.icons.filled.Checklist -import androidx.compose.material.icons.filled.Code -import androidx.compose.material.icons.filled.FormatBold -import androidx.compose.material.icons.filled.FormatItalic -import androidx.compose.material.icons.filled.FormatListNumbered -import androidx.compose.material.icons.filled.FormatQuote -import androidx.compose.material.icons.filled.FormatStrikethrough -import androidx.compose.material.icons.filled.HorizontalRule -import androidx.compose.material.icons.filled.Image -import androidx.compose.material.icons.filled.Link import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.SmallFloatingActionButton @@ -46,9 +34,11 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.focus.focusProperties -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols /** * Markdown toolbar with Material icons, grouped formatting buttons, and active state. @@ -75,30 +65,30 @@ fun MarkdownToolbar( Separator() // --- Inline formatting --- - ToolbarIconButton(Icons.Default.FormatBold, "Bold", state.isBold) { state.toggleBold() } - ToolbarIconButton(Icons.Default.FormatItalic, "Italic", state.isItalic) { state.toggleItalic() } - ToolbarIconButton(Icons.Default.FormatStrikethrough, "Strikethrough", state.isStrikethrough) { state.toggleStrikethrough() } - ToolbarIconButton(Icons.Default.Code, "Inline code", state.isInlineCode) { state.toggleInlineCode() } + ToolbarIconButton(MaterialSymbols.FormatBold, "Bold", state.isBold) { state.toggleBold() } + ToolbarIconButton(MaterialSymbols.FormatItalic, "Italic", state.isItalic) { state.toggleItalic() } + ToolbarIconButton(MaterialSymbols.FormatStrikethrough, "Strikethrough", state.isStrikethrough) { state.toggleStrikethrough() } + ToolbarIconButton(MaterialSymbols.Code, "Inline code", state.isInlineCode) { state.toggleInlineCode() } Separator() // --- Lists --- - ToolbarIconButton(Icons.AutoMirrored.Filled.FormatListBulleted, "Bullet list", state.isUnorderedList) { state.toggleUnorderedList() } - ToolbarIconButton(Icons.Default.FormatListNumbered, "Numbered list", state.isOrderedList) { state.toggleOrderedList() } - ToolbarIconButton(Icons.Default.Checklist, "Task list", state.isTaskList) { state.toggleTaskList() } + ToolbarIconButton(MaterialSymbols.AutoMirrored.FormatListBulleted, "Bullet list", state.isUnorderedList) { state.toggleUnorderedList() } + ToolbarIconButton(MaterialSymbols.FormatListNumbered, "Numbered list", state.isOrderedList) { state.toggleOrderedList() } + ToolbarIconButton(MaterialSymbols.Checklist, "Task list", state.isTaskList) { state.toggleTaskList() } Separator() // --- Block elements --- - ToolbarIconButton(Icons.Default.FormatQuote, "Blockquote", state.isBlockquote) { state.toggleBlockquote() } + ToolbarIconButton(MaterialSymbols.FormatQuote, "Blockquote", state.isBlockquote) { state.toggleBlockquote() } ToolbarButton(label = "```", active = false) { state.toggleCodeBlock() } - ToolbarIconButton(Icons.Default.HorizontalRule, "Horizontal rule", false) { state.insertHorizontalRule() } + ToolbarIconButton(MaterialSymbols.HorizontalRule, "Horizontal rule", false) { state.insertHorizontalRule() } Separator() // --- Insert --- - ToolbarIconButton(Icons.Default.Link, "Link", false) { state.insertLink() } - ToolbarIconButton(Icons.Default.Image, "Image", false) { state.insertImage() } + ToolbarIconButton(MaterialSymbols.Link, "Link", false) { state.insertLink() } + ToolbarIconButton(MaterialSymbols.Image, "Image", false) { state.insertImage() } } } @@ -112,7 +102,7 @@ private fun Separator() { @Composable private fun ToolbarIconButton( - icon: ImageVector, + icon: MaterialSymbol, contentDescription: String, active: Boolean, onClick: () -> Unit, diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/compose/editor/MetadataPanel.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/compose/editor/MetadataPanel.kt index 28a22e080..e9ffe20a3 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/compose/editor/MetadataPanel.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/compose/editor/MetadataPanel.kt @@ -30,8 +30,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Close import androidx.compose.material3.AssistChip import androidx.compose.material3.Icon import androidx.compose.material3.OutlinedTextField @@ -47,6 +45,8 @@ import androidx.compose.ui.input.key.Key import androidx.compose.ui.input.key.key import androidx.compose.ui.input.key.onKeyEvent import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols /** * Form fields for article metadata: title, summary, banner, tags, slug. @@ -137,7 +137,7 @@ fun MetadataPanel( label = { Text(tag) }, trailingIcon = { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = "Remove $tag", modifier = Modifier.size(16.dp), ) diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/icons/symbols/Icon.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/icons/symbols/Icon.kt new file mode 100644 index 000000000..3a490b5bc --- /dev/null +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/icons/symbols/Icon.kt @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2025 Vitor Pamplona + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.vitorpamplona.amethyst.commons.icons.symbols + +import androidx.compose.foundation.Canvas +import androidx.compose.foundation.layout.defaultMinSize +import androidx.compose.material3.LocalContentColor +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.drawscope.scale +import androidx.compose.ui.graphics.drawscope.translate +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.platform.LocalLayoutDirection +import androidx.compose.ui.semantics.Role +import androidx.compose.ui.semantics.contentDescription +import androidx.compose.ui.semantics.role +import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.drawText +import androidx.compose.ui.text.rememberTextMeasurer +import androidx.compose.ui.unit.LayoutDirection +import androidx.compose.ui.unit.dp + +private val IconDefaultSize = 24.dp + +@Composable +fun Icon( + symbol: MaterialSymbol, + contentDescription: String?, + modifier: Modifier = Modifier, + tint: Color = LocalContentColor.current, + weight: Int = MaterialSymbolsDefaults.WEIGHT, +) { + val fontFamily = rememberMaterialSymbolsFontFamily(weight) + val textMeasurer = rememberTextMeasurer() + val density = LocalDensity.current + val mirror = symbol.autoMirror && LocalLayoutDirection.current == LayoutDirection.Rtl + + val semanticsModifier = + if (contentDescription != null) { + Modifier.semantics { + this.contentDescription = contentDescription + this.role = Role.Image + } + } else { + Modifier + } + + Canvas( + modifier = + modifier + .defaultMinSize(IconDefaultSize, IconDefaultSize) + .then(semanticsModifier), + ) { + val sizePx = size.minDimension + val fontSize = with(density) { sizePx.toSp() } + val layout = + textMeasurer.measure( + text = symbol.glyph, + style = + TextStyle( + fontFamily = fontFamily, + fontSize = fontSize, + color = tint, + ), + ) + val tx = (size.width - layout.size.width) / 2f + val ty = (size.height - layout.size.height) / 2f + if (mirror) { + scale(scaleX = -1f, scaleY = 1f, pivot = Offset(size.width / 2f, size.height / 2f)) { + translate(tx, ty) { drawText(layout) } + } + } else { + translate(tx, ty) { drawText(layout) } + } + } +} diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/icons/symbols/MaterialSymbol.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/icons/symbols/MaterialSymbol.kt new file mode 100644 index 000000000..52d4e8843 --- /dev/null +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/icons/symbols/MaterialSymbol.kt @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2025 Vitor Pamplona + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.vitorpamplona.amethyst.commons.icons.symbols + +import androidx.compose.runtime.Immutable + +@Immutable +data class MaterialSymbol( + val glyph: String, + val autoMirror: Boolean = false, +) diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/icons/symbols/MaterialSymbolPainter.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/icons/symbols/MaterialSymbolPainter.kt new file mode 100644 index 000000000..e8c590b0b --- /dev/null +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/icons/symbols/MaterialSymbolPainter.kt @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2025 Vitor Pamplona + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.vitorpamplona.amethyst.commons.icons.symbols + +import androidx.compose.material3.LocalContentColor +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.graphics.drawscope.translate +import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.text.TextMeasurer +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.drawText +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.rememberTextMeasurer +import androidx.compose.ui.unit.Density + +@Composable +fun rememberMaterialSymbolPainter( + symbol: MaterialSymbol, + tint: Color = LocalContentColor.current, + weight: Int = MaterialSymbolsDefaults.WEIGHT, +): Painter { + val fontFamily = rememberMaterialSymbolsFontFamily(weight) + val textMeasurer = rememberTextMeasurer() + val density = LocalDensity.current + return remember(symbol, fontFamily, tint, density) { + MaterialSymbolPainter(symbol, fontFamily, tint, textMeasurer, density) + } +} + +private class MaterialSymbolPainter( + private val symbol: MaterialSymbol, + private val fontFamily: FontFamily, + private val tint: Color, + private val textMeasurer: TextMeasurer, + private val density: Density, +) : Painter() { + override val intrinsicSize: Size = Size.Unspecified + + override fun DrawScope.onDraw() { + val sizePx = size.minDimension + val fontSize = with(density) { sizePx.toSp() } + val layout = + textMeasurer.measure( + text = symbol.glyph, + style = + TextStyle( + fontFamily = fontFamily, + fontSize = fontSize, + color = tint, + ), + ) + val tx = (size.width - layout.size.width) / 2f + val ty = (size.height - layout.size.height) / 2f + translate(tx, ty) { drawText(layout) } + } +} diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/icons/symbols/MaterialSymbols.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/icons/symbols/MaterialSymbols.kt new file mode 100644 index 000000000..467bb7b70 --- /dev/null +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/icons/symbols/MaterialSymbols.kt @@ -0,0 +1,249 @@ +/* + * Copyright (c) 2025 Vitor Pamplona + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.vitorpamplona.amethyst.commons.icons.symbols + +// Generated from Material Symbols Outlined codepoints. +// Source: github.com/google/material-design-icons/variablefont + +object MaterialSymbols { + val AccountBalanceWallet = MaterialSymbol("\uE850") + val AccountCircle = MaterialSymbol("\uF20B") + val Add = MaterialSymbol("\uE145") + val AddCircle = MaterialSymbol("\uE3BA") + val AddPhotoAlternate = MaterialSymbol("\uE43E") + val AddReaction = MaterialSymbol("\uE1D3") + val AlternateEmail = MaterialSymbol("\uE0E6") + val Apps = MaterialSymbol("\uE5C3") + val ArrowDownward = MaterialSymbol("\uE5DB") + val ArrowUpward = MaterialSymbol("\uE5D8") + val Assistant = MaterialSymbol("\uE39F") + val AttachFile = MaterialSymbol("\uE226") + val AttachMoney = MaterialSymbol("\uE227") + val AudioFile = MaterialSymbol("\uEB82") + val AutoAwesome = MaterialSymbol("\uE65F") + val Block = MaterialSymbol("\uF08C") + val BluetoothAudio = MaterialSymbol("\uE60F") + val Bolt = MaterialSymbol("\uEA0B") + val Bookmark = MaterialSymbol("\uE8E7") + val BookmarkAdd = MaterialSymbol("\uE598") + val BookmarkBorder = MaterialSymbol("\uE8E7") + val BookmarkRemove = MaterialSymbol("\uE59A") + val Forward10 = MaterialSymbol("\uE056") + val Replay10 = MaterialSymbol("\uE059") + val CalendarMonth = MaterialSymbol("\uEBCC") + val Call = MaterialSymbol("\uF0D4") + val CallEnd = MaterialSymbol("\uF0BC") + val CameraAlt = MaterialSymbol("\uE412") + val CameraFront = MaterialSymbol("\uF2C9") + val CameraRear = MaterialSymbol("\uF2C8") + val Cancel = MaterialSymbol("\uE888") + val CellTower = MaterialSymbol("\uEBBA") + val Chat = MaterialSymbol("\uE0C9") + val Check = MaterialSymbol("\uE5CA") + val CheckCircle = MaterialSymbol("\uF0BE") + val Checklist = MaterialSymbol("\uE6B1") + val ChevronRight = MaterialSymbol("\uE5CC") + val Circle = MaterialSymbol("\uEF4A") + val Clear = MaterialSymbol("\uE5CD") + val Close = MaterialSymbol("\uE5CD") + val CloudDownload = MaterialSymbol("\uE2C0") + val CloudSync = MaterialSymbol("\uEB5A") + val CloudUpload = MaterialSymbol("\uE2C3") + val Code = MaterialSymbol("\uE86F") + val Collections = MaterialSymbol("\uE3D3") + val CollectionsBookmark = MaterialSymbol("\uE431") + val ContentCopy = MaterialSymbol("\uE14D") + val ContentPaste = MaterialSymbol("\uE14F") + val CurrencyBitcoin = MaterialSymbol("\uEBC5") + val Dashboard = MaterialSymbol("\uE871") + val DateRange = MaterialSymbol("\uE916") + val Delete = MaterialSymbol("\uE92E") + val DeleteForever = MaterialSymbol("\uE92B") + val DeleteSweep = MaterialSymbol("\uE16C") + val Description = MaterialSymbol("\uE873") + val Dns = MaterialSymbol("\uE875") + val Done = MaterialSymbol("\uE876") + val DoneAll = MaterialSymbol("\uE877") + val Download = MaterialSymbol("\uF090") + val DownloadForOffline = MaterialSymbol("\uF000") + val Downloading = MaterialSymbol("\uF001") + val Drafts = MaterialSymbol("\uE151") + val DragIndicator = MaterialSymbol("\uE945") + val Edit = MaterialSymbol("\uF097") + val EditNote = MaterialSymbol("\uE745") + val EditOff = MaterialSymbol("\uE950") + val Email = MaterialSymbol("\uE159") + val EmojiEmotions = MaterialSymbol("\uEA22") + val Error = MaterialSymbol("\uF8B6") + val ErrorOutline = MaterialSymbol("\uF8B6") + val ExpandLess = MaterialSymbol("\uE5CE") + val ExpandMore = MaterialSymbol("\uE5CF") + val Explore = MaterialSymbol("\uE87A") + val Extension = MaterialSymbol("\uE87B") + val Face = MaterialSymbol("\uF008") + val Favorite = MaterialSymbol("\uE87E") + val FavoriteBorder = MaterialSymbol("\uE87E") + val FileOpen = MaterialSymbol("\uEAF3") + val FilterAlt = MaterialSymbol("\uEF4F") + val FolderZip = MaterialSymbol("\uEB2C") + val FormatBold = MaterialSymbol("\uE238") + val FormatItalic = MaterialSymbol("\uE23F") + val FormatListNumbered = MaterialSymbol("\uE242") + val FormatQuote = MaterialSymbol("\uE244") + val FormatStrikethrough = MaterialSymbol("\uE246") + val Forum = MaterialSymbol("\uE8AF") + val Forward = MaterialSymbol("\uF57A") + val Fullscreen = MaterialSymbol("\uE5D0") + val FullscreenExit = MaterialSymbol("\uE5D1") + val Gavel = MaterialSymbol("\uE90E") + val Group = MaterialSymbol("\uEA21") + val GroupAdd = MaterialSymbol("\uE7F0") + val Groups = MaterialSymbol("\uF233") + val Hearing = MaterialSymbol("\uE023") + val History = MaterialSymbol("\uE8B3") + val Home = MaterialSymbol("\uE9B2") + val HorizontalRule = MaterialSymbol("\uF108") + val HourglassBottom = MaterialSymbol("\uEA5C") + val HourglassEmpty = MaterialSymbol("\uE88B") + val HourglassTop = MaterialSymbol("\uEA5B") + val Image = MaterialSymbol("\uE3F4") + val Key = MaterialSymbol("\uE73C") + val KeyboardArrowDown = MaterialSymbol("\uE313") + val KeyboardArrowUp = MaterialSymbol("\uE316") + val Language = MaterialSymbol("\uE894") + val Link = MaterialSymbol("\uE250") + val LocationOff = MaterialSymbol("\uE0C7") + val LocationOn = MaterialSymbol("\uF1DB") + val Lock = MaterialSymbol("\uE899") + val LockOpen = MaterialSymbol("\uE898") + val Mail = MaterialSymbol("\uE159") + val MenuBook = MaterialSymbol("\uEA19") + val Mic = MaterialSymbol("\uE31D") + val MicOff = MaterialSymbol("\uE02B") + val MilitaryTech = MaterialSymbol("\uEA3F") + val MoreVert = MaterialSymbol("\uE5D4") + val MoveToInbox = MaterialSymbol("\uE168") + val MusicNote = MaterialSymbol("\uE405") + val Notifications = MaterialSymbol("\uE7F5") + val Numbers = MaterialSymbol("\uEAC7") + val OpenInBrowser = MaterialSymbol("\uE89D") + val OpenInFull = MaterialSymbol("\uF1CE") + val Paid = MaterialSymbol("\uF041") + val PanTool = MaterialSymbol("\uE925") + val Pause = MaterialSymbol("\uE034") + val PauseCircleOutline = MaterialSymbol("\uE1A2") + val Payment = MaterialSymbol("\uE8A1") + val People = MaterialSymbol("\uEA21") + val Person = MaterialSymbol("\uF0D3") + val PersonAdd = MaterialSymbol("\uEA4D") + val PersonOff = MaterialSymbol("\uE510") + val PersonRemove = MaterialSymbol("\uEF66") + val Phone = MaterialSymbol("\uF0D4") + val Photo = MaterialSymbol("\uE432") + val PictureAsPdf = MaterialSymbol("\uE415") + val PictureInPicture = MaterialSymbol("\uE8AA") + val PlayArrow = MaterialSymbol("\uE037") + val PlayCircle = MaterialSymbol("\uE1C4") + val PlayCircleOutline = MaterialSymbol("\uE1C4") + val Poll = MaterialSymbol("\uF0CC") + val PrivacyTip = MaterialSymbol("\uF0DC") + val Public = MaterialSymbol("\uE80B") + val PublicOff = MaterialSymbol("\uF1CA") + val PushPin = MaterialSymbol("\uF10D") + val RadioButtonChecked = MaterialSymbol("\uE837") + val RadioButtonUnchecked = MaterialSymbol("\uE836") + val Recommend = MaterialSymbol("\uE9D2") + val Refresh = MaterialSymbol("\uE5D5") + val RemoveCircleOutline = MaterialSymbol("\uF08F") + val RemoveDone = MaterialSymbol("\uE9D3") + val Replay = MaterialSymbol("\uE042") + val Report = MaterialSymbol("\uF052") + val Save = MaterialSymbol("\uE161") + val SaveAlt = MaterialSymbol("\uF090") + val Schedule = MaterialSymbol("\uEFD6") + val Science = MaterialSymbol("\uEA4B") + val Search = MaterialSymbol("\uE8B6") + val Security = MaterialSymbol("\uE32A") + val Sensors = MaterialSymbol("\uE51E") + val Settings = MaterialSymbol("\uE8B8") + val SettingsInputAntenna = MaterialSymbol("\uE8BF") + val Share = MaterialSymbol("\uE80D") + val Shield = MaterialSymbol("\uE9E0") + val SkipNext = MaterialSymbol("\uE044") + val SkipPrevious = MaterialSymbol("\uE045") + val SmartDisplay = MaterialSymbol("\uF06A") + val SportsEsports = MaterialSymbol("\uEA28") + val Star = MaterialSymbol("\uF09A") + val StarBorder = MaterialSymbol("\uF09A") + val Stop = MaterialSymbol("\uE047") + val Storage = MaterialSymbol("\uE1DB") + val Storefront = MaterialSymbol("\uEA12") + val Subscriptions = MaterialSymbol("\uE064") + val SwapHoriz = MaterialSymbol("\uE8D4") + val Sync = MaterialSymbol("\uE627") + val SyncProblem = MaterialSymbol("\uE629") + val Tag = MaterialSymbol("\uE9EF") + val ThumbUp = MaterialSymbol("\uF577") + val Timer = MaterialSymbol("\uE425") + val TimerOff = MaterialSymbol("\uE426") + val Topic = MaterialSymbol("\uF1C8") + val Translate = MaterialSymbol("\uE8E2") + val TravelExplore = MaterialSymbol("\uE2DB") + val Tune = MaterialSymbol("\uE429") + val Upload = MaterialSymbol("\uF09B") + val VideoLibrary = MaterialSymbol("\uE04A") + val VideoSettings = MaterialSymbol("\uEA75") + val Videocam = MaterialSymbol("\uE04B") + val VideocamOff = MaterialSymbol("\uE04C") + val Visibility = MaterialSymbol("\uE8F4") + val VisibilityOff = MaterialSymbol("\uE8F5") + val Warning = MaterialSymbol("\uF083") + val Work = MaterialSymbol("\uE943") + val ZoomOutMap = MaterialSymbol("\uE56B") + + object AutoMirrored { + val ArrowBack = MaterialSymbol("\uE5C4", autoMirror = true) + val ArrowForward = MaterialSymbol("\uE5C8", autoMirror = true) + val ArrowForwardIos = MaterialSymbol("\uE5E1", autoMirror = true) + val Article = MaterialSymbol("\uEF42", autoMirror = true) + val Chat = MaterialSymbol("\uE0C9", autoMirror = true) + val ContactSupport = MaterialSymbol("\uE94C", autoMirror = true) + val DriveFileMove = MaterialSymbol("\uE9A1", autoMirror = true) + val ExitToApp = MaterialSymbol("\uE879", autoMirror = true) + val Feed = MaterialSymbol("\uF009", autoMirror = true) + val FormatListBulleted = MaterialSymbol("\uE241", autoMirror = true) + val Forward = MaterialSymbol("\uF57A", autoMirror = true) + val InsertDriveFile = MaterialSymbol("\uE66D", autoMirror = true) + val KeyboardArrowLeft = MaterialSymbol("\uE314", autoMirror = true) + val KeyboardArrowRight = MaterialSymbol("\uE315", autoMirror = true) + val Label = MaterialSymbol("\uE893", autoMirror = true) + val List = MaterialSymbol("\uE896", autoMirror = true) + val Logout = MaterialSymbol("\uE9BA", autoMirror = true) + val Message = MaterialSymbol("\uE0C9", autoMirror = true) + val OpenInNew = MaterialSymbol("\uE89E", autoMirror = true) + val PlaylistAdd = MaterialSymbol("\uE03B", autoMirror = true) + val Send = MaterialSymbol("\uE163", autoMirror = true) + val ShowChart = MaterialSymbol("\uE6E1", autoMirror = true) + val ViewList = MaterialSymbol("\uE8EF", autoMirror = true) + val VolumeOff = MaterialSymbol("\uE04F", autoMirror = true) + val VolumeUp = MaterialSymbol("\uE050", autoMirror = true) + } +} diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/icons/symbols/MaterialSymbolsDefaults.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/icons/symbols/MaterialSymbolsDefaults.kt new file mode 100644 index 000000000..a41303cea --- /dev/null +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/icons/symbols/MaterialSymbolsDefaults.kt @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2025 Vitor Pamplona + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.vitorpamplona.amethyst.commons.icons.symbols + +// Single source of truth for Material Symbols visual axes. Change WEIGHT here to globally +// re-tune line thickness (100 = Thin, 200 = ExtraLight, 300 = Light, 400 = Regular, …, 700 = Bold). +object MaterialSymbolsDefaults { + const val WEIGHT: Int = 100 + const val FILL: Float = 0f + const val OPTICAL_SIZE: Float = 24f + const val GRADE: Float = 0f +} diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/icons/symbols/MaterialSymbolsFont.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/icons/symbols/MaterialSymbolsFont.kt new file mode 100644 index 000000000..d0e8eefbf --- /dev/null +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/icons/symbols/MaterialSymbolsFont.kt @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2025 Vitor Pamplona + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.vitorpamplona.amethyst.commons.icons.symbols + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontVariation +import androidx.compose.ui.text.font.FontWeight +import com.vitorpamplona.amethyst.commons.resources.Res +import com.vitorpamplona.amethyst.commons.resources.material_symbols_outlined +import org.jetbrains.compose.resources.Font + +@Composable +fun rememberMaterialSymbolsFontFamily(weight: Int = MaterialSymbolsDefaults.WEIGHT): FontFamily { + val font = + Font( + resource = Res.font.material_symbols_outlined, + weight = FontWeight(weight), + variationSettings = + FontVariation.Settings( + FontVariation.weight(weight), + FontVariation.Setting("FILL", MaterialSymbolsDefaults.FILL), + FontVariation.Setting("opsz", MaterialSymbolsDefaults.OPTICAL_SIZE), + FontVariation.Setting("GRAD", MaterialSymbolsDefaults.GRADE), + ), + ) + return remember(font) { FontFamily(font) } +} diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/profile/ProfileBroadcastBanner.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/profile/ProfileBroadcastBanner.kt index 3009fd10b..90e241f6c 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/profile/ProfileBroadcastBanner.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/profile/ProfileBroadcastBanner.kt @@ -38,10 +38,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.Error -import androidx.compose.material.icons.filled.Sync import androidx.compose.material3.Icon import androidx.compose.material3.LinearProgressIndicator import androidx.compose.material3.MaterialTheme @@ -52,9 +48,11 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols /** * Shared banner showing profile metadata broadcast progress. @@ -91,7 +89,7 @@ fun ProfileBroadcastBanner( .animateContentSize(), ) { Icon( - imageVector = getStatusIcon(status), + symbol = getStatusIcon(status), contentDescription = null, tint = getStatusIconColor(status), modifier = Modifier.size(18.dp), @@ -152,12 +150,12 @@ private fun getStatusBackgroundColor(status: ProfileBroadcastStatus): Color = else -> MaterialTheme.colorScheme.surfaceContainer } -private fun getStatusIcon(status: ProfileBroadcastStatus): ImageVector = +private fun getStatusIcon(status: ProfileBroadcastStatus): MaterialSymbol = when (status) { - is ProfileBroadcastStatus.Broadcasting -> Icons.Default.Sync - is ProfileBroadcastStatus.Success -> Icons.Default.CheckCircle - is ProfileBroadcastStatus.Failed -> Icons.Default.Error - is ProfileBroadcastStatus.Idle -> Icons.Default.CheckCircle + is ProfileBroadcastStatus.Broadcasting -> MaterialSymbols.Sync + is ProfileBroadcastStatus.Success -> MaterialSymbols.CheckCircle + is ProfileBroadcastStatus.Failed -> MaterialSymbols.Error + is ProfileBroadcastStatus.Idle -> MaterialSymbols.CheckCircle } @Composable diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/chat/DmBroadcastBanner.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/chat/DmBroadcastBanner.kt index 2b9b8b1a5..532814311 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/chat/DmBroadcastBanner.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/chat/DmBroadcastBanner.kt @@ -33,10 +33,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.Error -import androidx.compose.material.icons.filled.Sync import androidx.compose.material3.Icon import androidx.compose.material3.LinearProgressIndicator import androidx.compose.material3.MaterialTheme @@ -46,6 +42,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols @Composable fun DmBroadcastBanner( @@ -87,17 +85,17 @@ fun DmBroadcastBanner( when (status) { is DmBroadcastStatus.Subscribing, is DmBroadcastStatus.Sending, - -> Icons.Default.Sync + -> MaterialSymbols.Sync - is DmBroadcastStatus.Sent -> Icons.Default.CheckCircle + is DmBroadcastStatus.Sent -> MaterialSymbols.CheckCircle - is DmBroadcastStatus.Failed -> Icons.Default.Error + is DmBroadcastStatus.Failed -> MaterialSymbols.Error - is DmBroadcastStatus.Idle -> Icons.Default.Sync + is DmBroadcastStatus.Idle -> MaterialSymbols.Sync } Icon( - imageVector = icon, + symbol = icon, contentDescription = null, modifier = Modifier.size(16.dp), tint = contentColor, diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/components/BunkerHeartbeatIndicator.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/components/BunkerHeartbeatIndicator.kt index 9a3f43f22..b682bfdba 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/components/BunkerHeartbeatIndicator.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/components/BunkerHeartbeatIndicator.kt @@ -26,9 +26,6 @@ import androidx.compose.animation.core.infiniteRepeatable import androidx.compose.animation.core.rememberInfiniteTransition import androidx.compose.animation.core.tween import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Favorite -import androidx.compose.material.icons.filled.FavoriteBorder import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.PlainTooltip @@ -44,6 +41,8 @@ import androidx.compose.ui.draw.scale import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.commons.domain.nip46.SignerConnectionState +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.quartz.utils.TimeUtils @OptIn(ExperimentalMaterial3Api::class) @@ -92,7 +91,7 @@ fun BunkerHeartbeatIndicator( label = "heartbeatScale", ) Icon( - Icons.Default.Favorite, + MaterialSymbols.Favorite, contentDescription = "Bunker connected", tint = Color(0xFF4CAF50), modifier = Modifier.size(20.dp).scale(scale), @@ -101,7 +100,7 @@ fun BunkerHeartbeatIndicator( is SignerConnectionState.Disconnected -> { Icon( - Icons.Default.FavoriteBorder, + MaterialSymbols.FavoriteBorder, contentDescription = "Bunker disconnected", tint = Color(0xFFF44336), modifier = Modifier.size(20.dp), diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/components/RobohashImage.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/components/RobohashImage.kt index 8825c4f24..6421bc971 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/components/RobohashImage.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/components/RobohashImage.kt @@ -21,8 +21,6 @@ package com.vitorpamplona.amethyst.commons.ui.components import androidx.compose.foundation.Image -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Face import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -30,6 +28,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.layout.ContentScale +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols +import com.vitorpamplona.amethyst.commons.icons.symbols.rememberMaterialSymbolPainter import com.vitorpamplona.amethyst.commons.robohash.CachedRobohash /** @@ -67,7 +67,7 @@ fun RobohashImage( ) } else { Image( - imageVector = Icons.Default.Face, + painter = rememberMaterialSymbolPainter(MaterialSymbols.Face), contentDescription = contentDescription, colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.onBackground), modifier = modifier, @@ -99,7 +99,7 @@ fun RobohashImage( ) } else { Image( - imageVector = Icons.Default.Face, + painter = rememberMaterialSymbolPainter(MaterialSymbols.Face), contentDescription = contentDescription, colorFilter = colorFilter ?: ColorFilter.tint(MaterialTheme.colorScheme.onBackground), modifier = modifier, diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/components/UserAvatar.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/components/UserAvatar.kt index bb71afaee..100658599 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/components/UserAvatar.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/components/UserAvatar.kt @@ -23,8 +23,6 @@ package com.vitorpamplona.amethyst.commons.ui.components import androidx.compose.foundation.Image import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Face import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.remember @@ -38,6 +36,8 @@ import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.unit.Dp import coil3.compose.AsyncImage +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols +import com.vitorpamplona.amethyst.commons.icons.symbols.rememberMaterialSymbolPainter import com.vitorpamplona.amethyst.commons.robohash.CachedRobohash import com.vitorpamplona.amethyst.commons.ui.theme.isLight @@ -96,9 +96,7 @@ fun UserAvatar( image = CachedRobohash.get(userHex, MaterialTheme.colorScheme.isLight), ) } else { - rememberVectorPainter( - image = Icons.Default.Face, - ) + rememberMaterialSymbolPainter(MaterialSymbols.Face) } AsyncImage( @@ -125,7 +123,7 @@ fun UserAvatar( } else { // Show generic icon Image( - imageVector = Icons.Default.Face, + painter = rememberMaterialSymbolPainter(MaterialSymbols.Face), contentDescription = contentDescription, colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.onBackground), modifier = avatarModifier, diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/components/UserSearchCard.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/components/UserSearchCard.kt index 14e41bbce..24b4ee79b 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/components/UserSearchCard.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/components/UserSearchCard.kt @@ -26,8 +26,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowForward import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.Icon @@ -38,6 +36,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.User import com.vitorpamplona.amethyst.commons.resources.Res import com.vitorpamplona.amethyst.commons.resources.accessibility_navigate @@ -100,7 +100,7 @@ fun UserSearchCard( } Icon( - Icons.AutoMirrored.Filled.ArrowForward, + MaterialSymbols.AutoMirrored.ArrowForward, contentDescription = stringResource(Res.string.accessibility_navigate), tint = MaterialTheme.colorScheme.onSurfaceVariant, ) diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/feed/FeedHeader.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/feed/FeedHeader.kt index eaa2d8862..835f5910d 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/feed/FeedHeader.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/ui/feed/FeedHeader.kt @@ -24,10 +24,6 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Check -import androidx.compose.material.icons.filled.Close -import androidx.compose.material.icons.filled.Refresh import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -36,6 +32,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.ui.theme.RelayStatusColors /** @@ -93,7 +91,7 @@ fun RelayStatusIndicator( } Icon( - imageVector = if (connectedCount > 0) Icons.Default.Check else Icons.Default.Close, + symbol = if (connectedCount > 0) MaterialSymbols.Check else MaterialSymbols.Close, contentDescription = null, tint = statusColor, modifier = Modifier.size(16.dp), @@ -107,7 +105,7 @@ fun RelayStatusIndicator( IconButton(onClick = onRefresh) { Icon( - Icons.Default.Refresh, + MaterialSymbols.Refresh, contentDescription = "Reconnect", tint = MaterialTheme.colorScheme.primary, ) diff --git a/desktopApp/build.gradle.kts b/desktopApp/build.gradle.kts index bd014b97b..0b1a166a0 100644 --- a/desktopApp/build.gradle.kts +++ b/desktopApp/build.gradle.kts @@ -31,7 +31,6 @@ kotlin { dependencies { implementation(compose.desktop.currentOs) implementation(libs.jetbrains.compose.material3) - implementation(libs.jetbrains.compose.material.icons.extended) implementation(libs.jetbrains.compose.components.resources) // Quartz Nostr library (will use JVM target) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/Main.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/Main.kt index fa46a6d2b..7da6e0562 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/Main.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/Main.kt @@ -33,8 +33,6 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Refresh import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.HorizontalDivider @@ -71,6 +69,8 @@ import androidx.compose.ui.window.Window import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.application import androidx.compose.ui.window.rememberWindowState +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.desktop.account.AccountManager import com.vitorpamplona.amethyst.desktop.account.AccountState import com.vitorpamplona.amethyst.desktop.cache.DesktopLocalCache @@ -1394,7 +1394,7 @@ fun RelaySettingsScreen( ) IconButton(onClick = { relayManager.connect() }) { Icon( - Icons.Default.Refresh, + MaterialSymbols.Refresh, contentDescription = "Reconnect", tint = MaterialTheme.colorScheme.primary, ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/chess/ChessScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/chess/ChessScreen.kt index b144fd9c7..5e50bcf17 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/chess/ChessScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/chess/ChessScreen.kt @@ -38,13 +38,6 @@ import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.automirrored.filled.KeyboardArrowLeft -import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Refresh -import androidx.compose.material.icons.filled.Visibility import androidx.compose.material3.Button import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults @@ -84,6 +77,8 @@ import com.vitorpamplona.amethyst.commons.chess.PublicGame import com.vitorpamplona.amethyst.commons.chess.PublicGameCard import com.vitorpamplona.amethyst.commons.chess.SpectatingGameCard import com.vitorpamplona.amethyst.commons.data.UserMetadataCache +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.ui.components.UserAvatar import com.vitorpamplona.amethyst.desktop.account.AccountState import com.vitorpamplona.amethyst.desktop.network.DesktopRelayConnectionManager @@ -193,7 +188,7 @@ fun ChessScreen( Row(verticalAlignment = Alignment.CenterVertically) { if (selectedGameId != null) { IconButton(onClick = { viewModel.selectGame(null) }) { - Icon(Icons.AutoMirrored.Default.ArrowBack, "Back to list") + Icon(MaterialSymbols.AutoMirrored.ArrowBack, "Back to list") } Spacer(Modifier.width(8.dp)) } @@ -211,13 +206,13 @@ fun ChessScreen( ) { // Refresh button IconButton(onClick = { viewModel.forceRefresh() }) { - Icon(Icons.Default.Refresh, "Refresh") + Icon(MaterialSymbols.Refresh, "Refresh") } // New Game button if (!account.isReadOnly) { Button(onClick = { showNewGameDialog = true }) { - Icon(Icons.Default.Add, "New Game") + Icon(MaterialSymbols.Add, "New Game") Spacer(Modifier.width(8.dp)) Text("New Game") } @@ -728,9 +723,9 @@ private fun DesktopChessGameLayout( ) { Icon( if (showInfoPanel) { - Icons.AutoMirrored.Filled.KeyboardArrowRight + MaterialSymbols.AutoMirrored.KeyboardArrowRight } else { - Icons.AutoMirrored.Filled.KeyboardArrowLeft + MaterialSymbols.AutoMirrored.KeyboardArrowLeft }, contentDescription = if (showInfoPanel) "Hide info panel" else "Show info panel", tint = MaterialTheme.colorScheme.onSurfaceVariant, @@ -907,7 +902,7 @@ private fun DesktopChessGameLayout( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp), ) { - Icon(Icons.Default.Visibility, contentDescription = null) + Icon(MaterialSymbols.Visibility, contentDescription = null) Text( "Watching game - spectator mode", style = MaterialTheme.typography.bodyMedium, diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ArticleReaderScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ArticleReaderScreen.kt index 7a99df01b..a63511ac4 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ArticleReaderScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ArticleReaderScreen.kt @@ -41,10 +41,6 @@ import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight -import androidx.compose.material.icons.filled.KeyboardArrowDown import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -75,6 +71,8 @@ import com.vitorpamplona.amethyst.commons.compose.article.ArticleHeader import com.vitorpamplona.amethyst.commons.compose.article.TableOfContents import com.vitorpamplona.amethyst.commons.compose.article.extractTableOfContents import com.vitorpamplona.amethyst.commons.compose.markdown.RenderMarkdown +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.nip23LongContent.ReadingTimeCalculator import com.vitorpamplona.amethyst.commons.ui.components.EmptyState import com.vitorpamplona.amethyst.commons.ui.components.LoadingState @@ -415,7 +413,7 @@ fun ArticleReaderScreen( Row(verticalAlignment = Alignment.CenterVertically) { IconButton(onClick = onBack) { Icon( - Icons.AutoMirrored.Filled.ArrowBack, + MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = "Back", modifier = Modifier.size(24.dp), ) @@ -531,9 +529,9 @@ fun ArticleReaderScreen( ) { Icon( if (showHighlightsPanel) { - Icons.Default.KeyboardArrowDown + MaterialSymbols.KeyboardArrowDown } else { - Icons.AutoMirrored.Filled.KeyboardArrowRight + MaterialSymbols.AutoMirrored.KeyboardArrowRight }, contentDescription = "Toggle highlights", modifier = Modifier.size(20.dp), diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/DevSettingsSection.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/DevSettingsSection.kt index 9ce43f43d..a86fe4b53 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/DevSettingsSection.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/DevSettingsSection.kt @@ -30,9 +30,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ContentCopy -import androidx.compose.material.icons.filled.Warning import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.HorizontalDivider @@ -51,6 +48,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.desktop.account.AccountState import java.awt.Toolkit import java.awt.datatransfer.StringSelection @@ -85,7 +84,7 @@ fun DevSettingsSection( horizontalArrangement = Arrangement.spacedBy(8.dp), ) { Icon( - Icons.Default.Warning, + MaterialSymbols.Warning, contentDescription = "Warning", tint = Color(0xFFFF9800), ) @@ -205,7 +204,7 @@ private fun KeyRow( ), ) { Icon( - Icons.Default.ContentCopy, + MaterialSymbols.ContentCopy, contentDescription = "Copy", modifier = Modifier.padding(end = 4.dp), ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/DraftsScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/DraftsScreen.kt index 64d383860..4f296d562 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/DraftsScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/DraftsScreen.kt @@ -31,9 +31,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Delete import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.Card @@ -54,6 +51,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.desktop.service.drafts.DesktopDraftStore import com.vitorpamplona.amethyst.desktop.service.drafts.DraftEntry import kotlinx.coroutines.launch @@ -79,7 +78,7 @@ fun DraftsScreen( color = MaterialTheme.colorScheme.onBackground, ) Button(onClick = { onOpenEditor(null) }) { - Icon(Icons.Default.Add, contentDescription = null) + Icon(MaterialSymbols.Add, contentDescription = null) Text("New Draft", modifier = Modifier.padding(start = 4.dp)) } } @@ -178,7 +177,7 @@ private fun DraftCard( } IconButton(onClick = onDelete) { Icon( - Icons.Default.Delete, + MaterialSymbols.Delete, contentDescription = "Delete draft", tint = MaterialTheme.colorScheme.error, ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/FeedScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/FeedScreen.kt index bf40fdb00..727fb9eb5 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/FeedScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/FeedScreen.kt @@ -36,10 +36,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Dns -import androidx.compose.material.icons.filled.Refresh import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.FilterChip @@ -61,6 +57,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.commons.compose.elements.BoostedMark import com.vitorpamplona.amethyst.commons.compose.layouts.GenericRepostLayout +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.Note import com.vitorpamplona.amethyst.commons.richtext.UrlParser import com.vitorpamplona.amethyst.commons.ui.components.EmptyState @@ -701,7 +699,7 @@ private fun FeedHeader( modifier = Modifier.size(24.dp), ) { Icon( - Icons.Default.Dns, + MaterialSymbols.Dns, contentDescription = "Edit Feed Relays", tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(18.dp), @@ -714,7 +712,7 @@ private fun FeedHeader( modifier = Modifier.size(24.dp), ) { Icon( - Icons.Default.Refresh, + MaterialSymbols.Refresh, contentDescription = "Refresh", tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(18.dp), @@ -727,7 +725,7 @@ private fun FeedHeader( onClick = onCompose, enabled = account != null && !account.isReadOnly, ) { - Icon(Icons.Default.Add, "New Post", Modifier.size(18.dp)) + Icon(MaterialSymbols.Add, "New Post", Modifier.size(18.dp)) Spacer(Modifier.width(8.dp)) Text("New Post") } diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/LoginScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/LoginScreen.kt index 52b5dbee0..de303f9cc 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/LoginScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/LoginScreen.kt @@ -32,9 +32,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.widthIn -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Check -import androidx.compose.material.icons.filled.Close import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.LinearProgressIndicator @@ -51,6 +48,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.resources.Res import com.vitorpamplona.amethyst.commons.resources.login_subtitle_desktop import com.vitorpamplona.amethyst.commons.resources.login_title @@ -213,7 +212,7 @@ fun ConnectingRelaysScreen( when { status.connected -> { Icon( - Icons.Default.Check, + MaterialSymbols.Check, contentDescription = null, tint = Color(0xFF4CAF50), modifier = Modifier.size(14.dp), @@ -222,7 +221,7 @@ fun ConnectingRelaysScreen( status.error != null -> { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = null, tint = MaterialTheme.colorScheme.error, modifier = Modifier.size(14.dp), diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/NoteActions.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/NoteActions.kt index c3e029682..490125e08 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/NoteActions.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/NoteActions.kt @@ -29,10 +29,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Favorite -import androidx.compose.material.icons.filled.MoreVert -import androidx.compose.material.icons.outlined.FavoriteBorder import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator @@ -60,6 +56,8 @@ import com.vitorpamplona.amethyst.commons.icons.BookmarkFilled import com.vitorpamplona.amethyst.commons.icons.Reply import com.vitorpamplona.amethyst.commons.icons.Repost import com.vitorpamplona.amethyst.commons.icons.Zap +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.nip18Reposts.RepostAction import com.vitorpamplona.amethyst.commons.model.nip25Reactions.ReactionAction import com.vitorpamplona.amethyst.commons.model.nip51Bookmarks.BookmarkAction @@ -552,7 +550,7 @@ fun NoteActionsRow( modifier = Modifier.size(32.dp), ) { Icon( - if (isLiked) Icons.Filled.Favorite else Icons.Outlined.FavoriteBorder, + if (isLiked) MaterialSymbols.Favorite else MaterialSymbols.FavoriteBorder, contentDescription = if (isLiked) "Unlike" else "Like", tint = if (isLiked) { @@ -731,7 +729,7 @@ fun NoteActionsRow( modifier = Modifier.size(32.dp), ) { Icon( - Icons.Default.MoreVert, + MaterialSymbols.MoreVert, contentDescription = "More options", tint = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.size(18.dp), diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/NotificationsScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/NotificationsScreen.kt index edb2e43d8..ef1e1d677 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/NotificationsScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/NotificationsScreen.kt @@ -31,8 +31,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Favorite import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.Icon @@ -48,10 +46,13 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.commons.icons.Reply import com.vitorpamplona.amethyst.commons.icons.Repost import com.vitorpamplona.amethyst.commons.icons.Zap +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols +import com.vitorpamplona.amethyst.commons.icons.symbols.rememberMaterialSymbolPainter import com.vitorpamplona.amethyst.commons.state.EventCollectionState import com.vitorpamplona.amethyst.commons.ui.components.EmptyState import com.vitorpamplona.amethyst.commons.ui.components.LoadingState @@ -273,28 +274,32 @@ fun NotificationCard(notification: NotificationItem) { val (icon, label, color) = when (notification) { is NotificationItem.Mention -> { - Triple(Icons.Default.Favorite, "mentioned you", MaterialTheme.colorScheme.primary) + Triple( + rememberMaterialSymbolPainter(MaterialSymbols.Favorite), + "mentioned you", + MaterialTheme.colorScheme.primary, + ) } is NotificationItem.Reply -> { - Triple(Reply, "replied", MaterialTheme.colorScheme.secondary) + Triple(rememberVectorPainter(Reply), "replied", MaterialTheme.colorScheme.secondary) } is NotificationItem.Reaction -> { Triple( - Icons.Default.Favorite, + rememberMaterialSymbolPainter(MaterialSymbols.Favorite), "reacted ${notification.content}", MaterialTheme.colorScheme.tertiary, ) } is NotificationItem.Repost -> { - Triple(Repost, "reposted", MaterialTheme.colorScheme.primary) + Triple(rememberVectorPainter(Repost), "reposted", MaterialTheme.colorScheme.primary) } is NotificationItem.Zap -> { val amountText = notification.amount?.let { " ${it / 1000} sats" } ?: "" - Triple(Zap, "zapped$amountText", MaterialTheme.colorScheme.primary) + Triple(rememberVectorPainter(Zap), "zapped$amountText", MaterialTheme.colorScheme.primary) } } diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ReadsScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ReadsScreen.kt index 7ff4b2b51..618579e16 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ReadsScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ReadsScreen.kt @@ -35,8 +35,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Refresh import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.FilterChip @@ -57,6 +55,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.state.EventCollectionState import com.vitorpamplona.amethyst.commons.ui.components.EmptyState import com.vitorpamplona.amethyst.commons.ui.components.LoadingState @@ -339,7 +339,7 @@ fun ReadsScreen( modifier = Modifier.size(24.dp), ) { Icon( - Icons.Default.Refresh, + MaterialSymbols.Refresh, contentDescription = "Refresh", tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(18.dp), diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/SearchScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/SearchScreen.kt index b09930c50..2c80ef19b 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/SearchScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/SearchScreen.kt @@ -39,18 +39,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowForward -import androidx.compose.material.icons.filled.Clear -import androidx.compose.material.icons.filled.Delete -import androidx.compose.material.icons.filled.Description -import androidx.compose.material.icons.filled.Dns -import androidx.compose.material.icons.filled.History -import androidx.compose.material.icons.filled.Person -import androidx.compose.material.icons.filled.Search -import androidx.compose.material.icons.filled.Star -import androidx.compose.material.icons.filled.Tag -import androidx.compose.material.icons.filled.Tune import androidx.compose.material3.AlertDialog import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults @@ -86,6 +74,8 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.commons.chess.RelaySyncStatus +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.search.AdvancedSearchBarState import com.vitorpamplona.amethyst.commons.search.QuerySerializer import com.vitorpamplona.amethyst.commons.search.SavedSearch @@ -375,7 +365,7 @@ fun SearchScreen( placeholder = { Text("Search notes, people, tags... or use operators") }, leadingIcon = { Icon( - Icons.Default.Search, + MaterialSymbols.Search, contentDescription = "Search", tint = MaterialTheme.colorScheme.onSurfaceVariant, ) @@ -384,7 +374,7 @@ fun SearchScreen( if (displayText.isNotEmpty()) { IconButton(onClick = { state.clearSearch() }) { Icon( - Icons.Default.Clear, + MaterialSymbols.Clear, contentDescription = "Clear", tint = MaterialTheme.colorScheme.onSurfaceVariant, ) @@ -397,7 +387,7 @@ fun SearchScreen( if (account != null && !account.isReadOnly) { IconButton(onClick = { showRelayPicker = true }) { Icon( - Icons.Default.Dns, + MaterialSymbols.Dns, contentDescription = "Search Relays", tint = MaterialTheme.colorScheme.onSurfaceVariant, ) @@ -405,7 +395,7 @@ fun SearchScreen( } IconButton(onClick = { state.togglePanel() }) { Icon( - Icons.Default.Tune, + MaterialSymbols.Tune, contentDescription = "Advanced Search", tint = if (panelExpanded) { @@ -553,7 +543,7 @@ private fun SearchEmptyState( horizontalArrangement = Arrangement.spacedBy(8.dp), ) { Icon( - Icons.Default.Star, + MaterialSymbols.Star, contentDescription = null, modifier = Modifier.size(16.dp), tint = MaterialTheme.colorScheme.primary, @@ -573,7 +563,7 @@ private fun SearchEmptyState( } IconButton(onClick = { onDeleteSaved(saved.id) }) { Icon( - Icons.Default.Delete, + MaterialSymbols.Delete, contentDescription = "Delete", modifier = Modifier.size(16.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant, @@ -613,7 +603,7 @@ private fun SearchEmptyState( horizontalArrangement = Arrangement.spacedBy(8.dp), ) { Icon( - Icons.Default.History, + MaterialSymbols.History, contentDescription = null, modifier = Modifier.size(16.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant, @@ -709,12 +699,12 @@ private fun SearchResultCard( horizontalArrangement = Arrangement.spacedBy(12.dp), ) { Icon( - imageVector = + symbol = when (result) { - is SearchResult.UserResult -> Icons.Default.Person - is SearchResult.NoteResult -> Icons.Default.Description - is SearchResult.AddressResult -> Icons.Default.Description - is SearchResult.HashtagResult -> Icons.Default.Tag + is SearchResult.UserResult -> MaterialSymbols.Person + is SearchResult.NoteResult -> MaterialSymbols.Description + is SearchResult.AddressResult -> MaterialSymbols.Description + is SearchResult.HashtagResult -> MaterialSymbols.Tag }, contentDescription = null, modifier = Modifier.size(24.dp), @@ -746,7 +736,7 @@ private fun SearchResultCard( } Icon( - Icons.AutoMirrored.Filled.ArrowForward, + MaterialSymbols.AutoMirrored.ArrowForward, contentDescription = "Navigate", tint = MaterialTheme.colorScheme.onSurfaceVariant, ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ThreadScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ThreadScreen.kt index ff54ca15b..0c7489a76 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ThreadScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/ThreadScreen.kt @@ -34,8 +34,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -52,6 +50,8 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.Note import com.vitorpamplona.amethyst.commons.ui.components.EmptyState import com.vitorpamplona.amethyst.commons.ui.components.LoadingState @@ -205,7 +205,7 @@ fun ThreadScreen( ) { IconButton(onClick = onBack) { Icon( - Icons.AutoMirrored.Filled.ArrowBack, + MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = "Back", modifier = Modifier.size(24.dp), ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/UserProfileScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/UserProfileScreen.kt index 1b61d4772..41348b130 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/UserProfileScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/UserProfileScreen.kt @@ -38,13 +38,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.filled.Check -import androidx.compose.material.icons.filled.ContentCopy -import androidx.compose.material.icons.filled.Edit -import androidx.compose.material.icons.filled.PersonAdd -import androidx.compose.material.icons.filled.PersonRemove import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.Card @@ -72,6 +65,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.nip02FollowList.FollowAction import com.vitorpamplona.amethyst.commons.profile.ProfileBroadcastBanner import com.vitorpamplona.amethyst.commons.profile.ProfileBroadcastStatus @@ -472,7 +467,7 @@ fun UserProfileScreen( ) { Row(verticalAlignment = Alignment.CenterVertically) { IconButton(onClick = onBack) { - Icon(Icons.AutoMirrored.Filled.ArrowBack, "Back") + Icon(MaterialSymbols.AutoMirrored.ArrowBack, "Back") } Spacer(Modifier.width(8.dp)) Text( @@ -490,7 +485,7 @@ fun UserProfileScreen( }, ) { Icon( - Icons.Default.Edit, + MaterialSymbols.Edit, contentDescription = "Edit profile", modifier = Modifier.size(18.dp), ) @@ -554,7 +549,7 @@ fun UserProfileScreen( else -> { Icon( - if (isFollowing) Icons.Default.PersonRemove else Icons.Default.PersonAdd, + if (isFollowing) MaterialSymbols.PersonRemove else MaterialSymbols.PersonAdd, contentDescription = if (isFollowing) "Unfollow" else "Follow", modifier = Modifier.size(18.dp), ) @@ -639,7 +634,7 @@ fun UserProfileScreen( modifier = Modifier.size(20.dp), ) { Icon( - if (copied) Icons.Default.Check else Icons.Default.ContentCopy, + if (copied) MaterialSymbols.Check else MaterialSymbols.ContentCopy, contentDescription = if (copied) "Copied" else "Copy npub", modifier = Modifier.size(14.dp), tint = @@ -901,7 +896,7 @@ fun UserProfileScreen( verticalAlignment = Alignment.CenterVertically, ) { IconButton(onClick = onBack) { - Icon(Icons.AutoMirrored.Filled.ArrowBack, "Back") + Icon(MaterialSymbols.AutoMirrored.ArrowBack, "Back") } Spacer(Modifier.width(8.dp)) UserAvatar( diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/auth/KeyInputField.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/auth/KeyInputField.kt index bae3732b1..21354f5be 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/auth/KeyInputField.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/auth/KeyInputField.kt @@ -22,9 +22,6 @@ package com.vitorpamplona.amethyst.desktop.ui.auth import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Visibility -import androidx.compose.material.icons.filled.VisibilityOff import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.Icon @@ -42,6 +39,8 @@ import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.resources.Res import com.vitorpamplona.amethyst.commons.resources.login_hide_key import com.vitorpamplona.amethyst.commons.resources.login_key_label @@ -79,7 +78,7 @@ fun KeyInputField( trailingIcon = { IconButton(onClick = { showKey = !showKey }) { Icon( - if (showKey) Icons.Default.VisibilityOff else Icons.Default.Visibility, + if (showKey) MaterialSymbols.VisibilityOff else MaterialSymbols.Visibility, contentDescription = if (showKey) stringResource(Res.string.login_hide_key) else stringResource(Res.string.login_show_key), ) } diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/auth/LoginProgressSteps.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/auth/LoginProgressSteps.kt index 08655a5c4..8c29bbb67 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/auth/LoginProgressSteps.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/auth/LoginProgressSteps.kt @@ -28,9 +28,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Check -import androidx.compose.material.icons.filled.Close import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -40,6 +37,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.desktop.account.LoginProgress import com.vitorpamplona.amethyst.desktop.account.RelayLoginStatus @@ -111,7 +110,7 @@ private fun StepRow(step: StepInfo) { when (step.state) { StepState.DONE -> { Icon( - Icons.Default.Check, + MaterialSymbols.Check, contentDescription = null, tint = Color(0xFF4CAF50), modifier = Modifier.size(16.dp), @@ -155,7 +154,7 @@ private fun RelayRow( when (status) { RelayLoginStatus.EVENT_SENT -> { Icon( - Icons.Default.Check, + MaterialSymbols.Check, contentDescription = null, tint = Color(0xFF2196F3), modifier = Modifier.size(12.dp), @@ -164,7 +163,7 @@ private fun RelayRow( RelayLoginStatus.CONNECTED -> { Icon( - Icons.Default.Check, + MaterialSymbols.Check, contentDescription = null, tint = Color(0xFF4CAF50), modifier = Modifier.size(12.dp), @@ -175,7 +174,7 @@ private fun RelayRow( RelayLoginStatus.SEND_FAILED, -> { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = null, tint = MaterialTheme.colorScheme.error, modifier = Modifier.size(12.dp), diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/ChatFileAttachment.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/ChatFileAttachment.kt index f8d45cd56..c4cd58ffb 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/ChatFileAttachment.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/ChatFileAttachment.kt @@ -32,11 +32,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.Forward -import androidx.compose.material.icons.automirrored.filled.InsertDriveFile -import androidx.compose.material.icons.filled.Download -import androidx.compose.material.icons.filled.Lock import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.CircularProgressIndicator @@ -61,6 +56,8 @@ import androidx.compose.ui.input.pointer.isSecondaryPressed import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.desktop.service.media.EncryptedMediaService import com.vitorpamplona.quartz.nip17Dm.files.ChatMessageEncryptedFileHeaderEvent import kotlinx.coroutines.Dispatchers @@ -144,7 +141,7 @@ fun ChatFileAttachment( // Encryption indicator Row(verticalAlignment = Alignment.CenterVertically) { Icon( - Icons.Default.Lock, + MaterialSymbols.Lock, contentDescription = "Encrypted", modifier = Modifier.size(14.dp), tint = MaterialTheme.colorScheme.primary, @@ -191,7 +188,7 @@ fun ChatFileAttachment( // Non-image file Row(verticalAlignment = Alignment.CenterVertically) { Icon( - Icons.AutoMirrored.Filled.InsertDriveFile, + MaterialSymbols.AutoMirrored.InsertDriveFile, contentDescription = "File", modifier = Modifier.size(32.dp), ) @@ -223,7 +220,7 @@ fun ChatFileAttachment( DropdownMenuItem( text = { Text("Save to disk") }, leadingIcon = { - Icon(Icons.Default.Download, contentDescription = null, modifier = Modifier.size(18.dp)) + Icon(MaterialSymbols.Download, contentDescription = null, modifier = Modifier.size(18.dp)) }, enabled = decryptedBytes != null, onClick = { @@ -237,7 +234,7 @@ fun ChatFileAttachment( DropdownMenuItem( text = { Text("Forward") }, leadingIcon = { - Icon(Icons.AutoMirrored.Filled.Forward, contentDescription = null, modifier = Modifier.size(18.dp)) + Icon(MaterialSymbols.AutoMirrored.Forward, contentDescription = null, modifier = Modifier.size(18.dp)) }, onClick = { showContextMenu = false diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/ChatPane.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/ChatPane.kt index 041626af1..34c223b97 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/ChatPane.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/ChatPane.kt @@ -38,13 +38,6 @@ import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.selection.SelectionContainer -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.automirrored.filled.Send -import androidx.compose.material.icons.filled.AttachFile -import androidx.compose.material.icons.filled.Lock -import androidx.compose.material.icons.filled.LockOpen -import androidx.compose.material.icons.outlined.AddReaction import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -83,6 +76,8 @@ import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Popup import androidx.compose.ui.window.PopupProperties +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.IAccount import com.vitorpamplona.amethyst.commons.model.Note import com.vitorpamplona.amethyst.commons.model.cache.ICacheProvider @@ -230,7 +225,7 @@ fun ChatPane( modifier = Modifier.size(40.dp), ) { Icon( - Icons.AutoMirrored.Filled.ArrowBack, + MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = "Back to conversations", ) } @@ -517,7 +512,7 @@ private fun MessageWithReactions( when (event) { is PrivateDmEvent -> { Icon( - Icons.Default.LockOpen, + MaterialSymbols.LockOpen, contentDescription = "NIP-04 (legacy)", modifier = Modifier.size(12.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.4f), @@ -528,7 +523,7 @@ private fun MessageWithReactions( is ChatMessageEncryptedFileHeaderEvent, -> { Icon( - Icons.Default.Lock, + MaterialSymbols.Lock, contentDescription = "NIP-17 (encrypted)", modifier = Modifier.size(12.dp), tint = MaterialTheme.colorScheme.primary.copy(alpha = 0.6f), @@ -572,7 +567,7 @@ private fun MessageWithReactions( modifier = Modifier.size(20.dp), ) { Icon( - imageVector = Icons.Outlined.AddReaction, + symbol = MaterialSymbols.AddReaction, contentDescription = "React", modifier = Modifier.size(14.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant, @@ -709,7 +704,7 @@ private fun MessageInput( modifier = Modifier.size(40.dp), ) { Icon( - Icons.Default.AttachFile, + MaterialSymbols.AttachFile, contentDescription = "Attach file", tint = if (isUploading) { @@ -749,7 +744,7 @@ private fun MessageInput( modifier = Modifier.size(40.dp), ) { Icon( - Icons.AutoMirrored.Filled.Send, + MaterialSymbols.AutoMirrored.Send, contentDescription = "Send", tint = if (canSend && !isUploading) { @@ -768,7 +763,7 @@ private fun MessageInput( modifier = Modifier.padding(start = 4.dp), ) { Icon( - imageVector = Icons.Default.Lock, + symbol = MaterialSymbols.Lock, contentDescription = "NIP-17 (encrypted)", modifier = Modifier.size(16.dp), tint = MaterialTheme.colorScheme.primary, diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/ConversationListPane.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/ConversationListPane.kt index 7aa4db00e..35417f212 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/ConversationListPane.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/ConversationListPane.kt @@ -38,10 +38,6 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Dns -import androidx.compose.material.icons.filled.Group import androidx.compose.material3.FilterChip import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -67,6 +63,8 @@ import androidx.compose.ui.input.key.onPreviewKeyEvent import androidx.compose.ui.input.key.type import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.ui.components.UserAvatar import com.vitorpamplona.amethyst.commons.util.toTimeAgo import com.vitorpamplona.quartz.nip17Dm.base.ChatroomKey @@ -186,7 +184,7 @@ fun ConversationListPane( modifier = Modifier.size(32.dp), ) { Icon( - Icons.Default.Dns, + MaterialSymbols.Dns, contentDescription = "DM Relays", tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(20.dp), @@ -197,7 +195,7 @@ fun ConversationListPane( modifier = Modifier.size(32.dp), ) { Icon( - Icons.Default.Add, + MaterialSymbols.Add, contentDescription = "New conversation", tint = MaterialTheme.colorScheme.primary, modifier = Modifier.size(20.dp), @@ -324,7 +322,7 @@ private fun ConversationCard( ) } else if (item.isGroup) { Icon( - Icons.Default.Group, + MaterialSymbols.Group, contentDescription = "Group", modifier = Modifier.size(40.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant, diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/DesktopMessagesScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/DesktopMessagesScreen.kt index 8897ce41a..76fe06e72 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/DesktopMessagesScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/DesktopMessagesScreen.kt @@ -28,8 +28,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Email import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -53,6 +51,8 @@ import androidx.compose.ui.input.key.key import androidx.compose.ui.input.key.onPreviewKeyEvent import androidx.compose.ui.input.key.type import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.IAccount import com.vitorpamplona.amethyst.commons.model.cache.ICacheProvider import com.vitorpamplona.amethyst.commons.ui.chat.DmBroadcastStatus @@ -335,7 +335,7 @@ private fun EmptyConversationState() { horizontalAlignment = Alignment.CenterHorizontally, ) { Icon( - Icons.Default.Email, + MaterialSymbols.Email, contentDescription = null, tint = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.3f), modifier = Modifier.size(48.dp), diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/NewDmDialog.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/NewDmDialog.kt index aadf364f3..53d4ca6e7 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/NewDmDialog.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/chats/NewDmDialog.kt @@ -29,9 +29,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Clear -import androidx.compose.material.icons.filled.Search import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -51,6 +48,8 @@ import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.cache.ICacheProvider import com.vitorpamplona.amethyst.commons.search.SearchResult import com.vitorpamplona.amethyst.commons.ui.components.UserSearchCard @@ -161,12 +160,12 @@ fun NewDmDialog( .focusRequester(focusRequester), placeholder = { Text("Search users by name or npub...") }, leadingIcon = { - Icon(Icons.Default.Search, contentDescription = null) + Icon(MaterialSymbols.Search, contentDescription = null) }, trailingIcon = { if (searchText.isNotEmpty()) { IconButton(onClick = { searchState.clearSearch() }) { - Icon(Icons.Default.Clear, contentDescription = "Clear") + Icon(MaterialSymbols.Clear, contentDescription = "Clear") } } }, diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/compose/ComposeRelayPicker.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/compose/ComposeRelayPicker.kt index dc9398080..2e0c47af8 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/compose/ComposeRelayPicker.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/compose/ComposeRelayPicker.kt @@ -33,9 +33,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ChevronRight -import androidx.compose.material.icons.filled.ExpandMore import androidx.compose.material3.AssistChip import androidx.compose.material3.Checkbox import androidx.compose.material3.Icon @@ -51,6 +48,8 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.nip01Core.relay.normalizer.displayUrl @@ -80,7 +79,7 @@ fun ComposeRelayPicker( verticalAlignment = Alignment.CenterVertically, ) { Icon( - if (expanded) Icons.Default.ExpandMore else Icons.Default.ChevronRight, + if (expanded) MaterialSymbols.ExpandMore else MaterialSymbols.ChevronRight, contentDescription = null, ) Spacer(Modifier.width(4.dp)) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/AppDrawer.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/AppDrawer.kt index 0b22a90f5..1f9063e87 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/AppDrawer.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/AppDrawer.kt @@ -42,21 +42,6 @@ import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.Article -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Check -import androidx.compose.material.icons.filled.Close -import androidx.compose.material.icons.filled.Delete -import androidx.compose.material.icons.filled.Dns -import androidx.compose.material.icons.filled.Edit -import androidx.compose.material.icons.filled.Explore -import androidx.compose.material.icons.filled.Groups -import androidx.compose.material.icons.filled.Person -import androidx.compose.material.icons.filled.PushPin -import androidx.compose.material.icons.filled.Search -import androidx.compose.material.icons.filled.SportsEsports -import androidx.compose.material.icons.filled.Star import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.DropdownMenu @@ -90,7 +75,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.input.key.Key import androidx.compose.ui.input.key.KeyEventType import androidx.compose.ui.input.key.key @@ -101,6 +85,9 @@ import androidx.compose.ui.input.pointer.isSecondaryPressed import androidx.compose.ui.input.pointer.onPointerEvent import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.desktop.LayoutMode import kotlinx.coroutines.delay @@ -108,14 +95,14 @@ import kotlinx.coroutines.delay enum class ScreenCategory( val title: String, - val icon: ImageVector, + val icon: MaterialSymbol, ) { - SOCIAL("Social", Icons.Default.Groups), - LONG_FORM("Long-Form", Icons.AutoMirrored.Filled.Article), - DISCOVERY("Discovery", Icons.Default.Explore), - IDENTITY("Identity", Icons.Default.Person), - PLAY("Play", Icons.Default.SportsEsports), - NETWORK("Network", Icons.Default.Dns), + SOCIAL("Social", MaterialSymbols.Groups), + LONG_FORM("Long-Form", MaterialSymbols.AutoMirrored.Article), + DISCOVERY("Discovery", MaterialSymbols.Explore), + IDENTITY("Identity", MaterialSymbols.Person), + PLAY("Play", MaterialSymbols.SportsEsports), + NETWORK("Network", MaterialSymbols.Dns), } // -- Extensions on DeckColumnType -- @@ -412,7 +399,7 @@ fun AppDrawer( .focusRequester(searchFocusRequester), placeholder = { Text("Search screens and workspaces...") }, singleLine = true, - leadingIcon = { Icon(Icons.Default.Search, "Search") }, + leadingIcon = { Icon(MaterialSymbols.Search, "Search") }, ) if (state.awaitingHashtag) { @@ -623,7 +610,7 @@ private fun DrawerScreenCard( }, leadingIcon = { Icon( - Icons.Default.PushPin, + MaterialSymbols.PushPin, contentDescription = null, modifier = Modifier.size(16.dp), ) @@ -824,17 +811,17 @@ private fun WorkspaceCard( if (isActive) { Spacer(Modifier.width(8.dp)) Icon( - Icons.Default.Check, + MaterialSymbols.Check, "Active", Modifier.size(18.dp), tint = MaterialTheme.colorScheme.primary, ) } IconButton(onClick = onEdit) { - Icon(Icons.Default.Edit, "Edit", Modifier.size(18.dp)) + Icon(MaterialSymbols.Edit, "Edit", Modifier.size(18.dp)) } IconButton(onClick = onDelete, enabled = canDelete) { - Icon(Icons.Default.Delete, "Delete", Modifier.size(18.dp)) + Icon(MaterialSymbols.Delete, "Delete", Modifier.size(18.dp)) } } } @@ -859,7 +846,7 @@ private fun AddWorkspaceCard( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Center, ) { - Icon(Icons.Default.Add, "Add workspace", Modifier.size(24.dp)) + Icon(MaterialSymbols.Add, "Add workspace", Modifier.size(24.dp)) Spacer(Modifier.width(8.dp)) Text( "New Workspace", @@ -1025,7 +1012,7 @@ private fun DeckColumnEditor( }, enabled = columns.size > 1, ) { - Icon(Icons.Default.Close, "Remove") + Icon(MaterialSymbols.Close, "Remove") } } } @@ -1064,7 +1051,7 @@ private fun SinglePaneScreensEditor( Row(verticalAlignment = Alignment.CenterVertically) { if (idx == 0) { Icon( - Icons.Default.Star, + MaterialSymbols.Star, "Default", Modifier.size(16.dp), tint = MaterialTheme.colorScheme.primary, @@ -1074,7 +1061,7 @@ private fun SinglePaneScreensEditor( Text(displayName, Modifier.weight(1f)) IconButton(onClick = { onScreensChange(screens.toMutableList().apply { removeAt(idx) }) - }) { Icon(Icons.Default.Close, "Remove", Modifier.size(16.dp)) } + }) { Icon(MaterialSymbols.Close, "Remove", Modifier.size(16.dp)) } } } // Add screen dropdown diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/ColumnHeader.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/ColumnHeader.kt index 5325562a2..6fde67db9 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/ColumnHeader.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/ColumnHeader.kt @@ -29,20 +29,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.automirrored.filled.Article -import androidx.compose.material.icons.filled.Close -import androidx.compose.material.icons.filled.Dns -import androidx.compose.material.icons.filled.Email -import androidx.compose.material.icons.filled.Extension -import androidx.compose.material.icons.filled.Home -import androidx.compose.material.icons.filled.Notifications -import androidx.compose.material.icons.filled.Person -import androidx.compose.material.icons.filled.Public -import androidx.compose.material.icons.filled.Search -import androidx.compose.material.icons.filled.Settings -import androidx.compose.material.icons.filled.Tag import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -50,10 +36,12 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols @Composable fun ColumnHeader( @@ -81,7 +69,7 @@ fun ColumnHeader( if (hasBackStack) { IconButton(onClick = onBack, modifier = Modifier.size(28.dp)) { Icon( - Icons.AutoMirrored.Filled.ArrowBack, + MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = "Back", modifier = Modifier.size(16.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant, @@ -91,7 +79,7 @@ fun ColumnHeader( } Icon( - imageVector = column.type.icon(), + symbol = column.type.icon(), contentDescription = null, modifier = Modifier.size(16.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant, @@ -111,7 +99,7 @@ fun ColumnHeader( if (canClose) { IconButton(onClick = onClose, modifier = Modifier.size(28.dp)) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = "Close column", modifier = Modifier.size(16.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant, @@ -121,24 +109,24 @@ fun ColumnHeader( } } -fun DeckColumnType.icon(): ImageVector = +fun DeckColumnType.icon(): MaterialSymbol = when (this) { - DeckColumnType.HomeFeed -> Icons.Default.Home - DeckColumnType.Notifications -> Icons.Default.Notifications - DeckColumnType.Messages -> Icons.Default.Email - DeckColumnType.Search -> Icons.Default.Search - DeckColumnType.Reads -> Icons.AutoMirrored.Filled.Article - DeckColumnType.Bookmarks -> com.vitorpamplona.amethyst.commons.icons.Bookmark - DeckColumnType.GlobalFeed -> Icons.Default.Public - DeckColumnType.MyProfile -> Icons.Default.Person - DeckColumnType.Chess -> Icons.Default.Extension - DeckColumnType.Settings -> Icons.Default.Settings - DeckColumnType.Relays -> Icons.Default.Dns - is DeckColumnType.Article -> Icons.AutoMirrored.Filled.Article - is DeckColumnType.Editor -> Icons.AutoMirrored.Filled.Article - DeckColumnType.Drafts -> Icons.AutoMirrored.Filled.Article - DeckColumnType.MyHighlights -> Icons.AutoMirrored.Filled.Article - is DeckColumnType.Profile -> Icons.Default.Person - is DeckColumnType.Thread -> Icons.AutoMirrored.Filled.Article - is DeckColumnType.Hashtag -> Icons.Default.Tag + DeckColumnType.HomeFeed -> MaterialSymbols.Home + DeckColumnType.Notifications -> MaterialSymbols.Notifications + DeckColumnType.Messages -> MaterialSymbols.Email + DeckColumnType.Search -> MaterialSymbols.Search + DeckColumnType.Reads -> MaterialSymbols.AutoMirrored.Article + DeckColumnType.Bookmarks -> MaterialSymbols.Bookmark + DeckColumnType.GlobalFeed -> MaterialSymbols.Public + DeckColumnType.MyProfile -> MaterialSymbols.Person + DeckColumnType.Chess -> MaterialSymbols.Extension + DeckColumnType.Settings -> MaterialSymbols.Settings + DeckColumnType.Relays -> MaterialSymbols.Dns + is DeckColumnType.Article -> MaterialSymbols.AutoMirrored.Article + is DeckColumnType.Editor -> MaterialSymbols.AutoMirrored.Article + DeckColumnType.Drafts -> MaterialSymbols.AutoMirrored.Article + DeckColumnType.MyHighlights -> MaterialSymbols.AutoMirrored.Article + is DeckColumnType.Profile -> MaterialSymbols.Person + is DeckColumnType.Thread -> MaterialSymbols.AutoMirrored.Article + is DeckColumnType.Hashtag -> MaterialSymbols.Tag } diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/DeckSidebar.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/DeckSidebar.kt index 32f470b9f..a5a282e00 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/DeckSidebar.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/DeckSidebar.kt @@ -28,9 +28,6 @@ import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -42,6 +39,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.vitorpamplona.amethyst.commons.domain.nip46.SignerConnectionState +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.tor.TorServiceStatus import com.vitorpamplona.amethyst.commons.ui.components.BunkerHeartbeatIndicator import com.vitorpamplona.amethyst.desktop.ui.tor.TorStatusIndicator @@ -77,7 +76,7 @@ fun DeckSidebar( IconButton(onClick = onAddColumn) { Icon( - Icons.Default.Add, + MaterialSymbols.Add, contentDescription = "Add Column", tint = MaterialTheme.colorScheme.onSurfaceVariant, ) @@ -97,7 +96,7 @@ fun DeckSidebar( IconButton(onClick = onOpenSettings) { Icon( - Icons.Default.Settings, + MaterialSymbols.Settings, contentDescription = "Settings", tint = MaterialTheme.colorScheme.onSurfaceVariant, ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/SinglePaneLayout.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/SinglePaneLayout.kt index 4ca3d9b2f..3a9fdcb77 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/SinglePaneLayout.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/SinglePaneLayout.kt @@ -29,8 +29,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Apps import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.NavigationRail @@ -46,6 +44,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.commons.domain.nip46.SignerConnectionState +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.ui.components.BunkerHeartbeatIndicator import com.vitorpamplona.amethyst.desktop.DesktopScreen import com.vitorpamplona.amethyst.desktop.account.AccountManager @@ -131,7 +131,7 @@ fun SinglePaneLayout( onClick = onOpenAppDrawer, icon = { Icon( - Icons.Default.Apps, + MaterialSymbols.Apps, contentDescription = "App Drawer", modifier = Modifier.size(22.dp), ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/Workspace.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/Workspace.kt index 0e2d2c62a..e848924e2 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/Workspace.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/deck/Workspace.kt @@ -20,22 +20,8 @@ */ package com.vitorpamplona.amethyst.desktop.ui.deck -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Bookmark -import androidx.compose.material.icons.filled.Chat -import androidx.compose.material.icons.filled.Code -import androidx.compose.material.icons.filled.Edit -import androidx.compose.material.icons.filled.Explore -import androidx.compose.material.icons.filled.Favorite -import androidx.compose.material.icons.filled.Groups -import androidx.compose.material.icons.filled.Home -import androidx.compose.material.icons.filled.MenuBook -import androidx.compose.material.icons.filled.Person -import androidx.compose.material.icons.filled.Search -import androidx.compose.material.icons.filled.SportsEsports -import androidx.compose.material.icons.filled.Star -import androidx.compose.material.icons.filled.Work -import androidx.compose.ui.graphics.vector.ImageVector +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.desktop.LayoutMode data class Workspace( @@ -57,25 +43,25 @@ data class Workspace( } object WorkspaceIcons { - private val icons: Map = + private val icons: Map = mapOf( - "Groups" to Icons.Default.Groups, - "Edit" to Icons.Default.Edit, - "MenuBook" to Icons.Default.MenuBook, - "Home" to Icons.Default.Home, - "Chat" to Icons.Default.Chat, - "Search" to Icons.Default.Search, - "SportsEsports" to Icons.Default.SportsEsports, - "Bookmark" to Icons.Default.Bookmark, - "Explore" to Icons.Default.Explore, - "Person" to Icons.Default.Person, - "Star" to Icons.Default.Star, - "Favorite" to Icons.Default.Favorite, - "Work" to Icons.Default.Work, - "Code" to Icons.Default.Code, + "Groups" to MaterialSymbols.Groups, + "Edit" to MaterialSymbols.Edit, + "MenuBook" to MaterialSymbols.MenuBook, + "Home" to MaterialSymbols.Home, + "Chat" to MaterialSymbols.Chat, + "Search" to MaterialSymbols.Search, + "SportsEsports" to MaterialSymbols.SportsEsports, + "Bookmark" to MaterialSymbols.Bookmark, + "Explore" to MaterialSymbols.Explore, + "Person" to MaterialSymbols.Person, + "Star" to MaterialSymbols.Star, + "Favorite" to MaterialSymbols.Favorite, + "Work" to MaterialSymbols.Work, + "Code" to MaterialSymbols.Code, ) val availableNames: List = icons.keys.sorted() - fun resolve(name: String): ImageVector = icons[name] ?: Icons.Default.Home + fun resolve(name: String): MaterialSymbol = icons[name] ?: MaterialSymbols.Home } diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/highlights/ArticleHighlightsPanel.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/highlights/ArticleHighlightsPanel.kt index 3fec86bff..ccf0e1c8f 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/highlights/ArticleHighlightsPanel.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/highlights/ArticleHighlightsPanel.kt @@ -28,11 +28,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Delete -import androidx.compose.material.icons.filled.Edit -import androidx.compose.material.icons.filled.Lock -import androidx.compose.material.icons.filled.Public import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.Icon @@ -49,6 +44,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.highlights.HighlightData import com.vitorpamplona.amethyst.desktop.network.DesktopRelayConnectionManager import com.vitorpamplona.amethyst.desktop.service.highlights.DesktopHighlightStore @@ -160,7 +157,7 @@ private fun HighlightPanelCard( ) { // Published status Icon( - imageVector = if (highlight.published) Icons.Default.Public else Icons.Default.Lock, + symbol = if (highlight.published) MaterialSymbols.Public else MaterialSymbols.Lock, contentDescription = if (highlight.published) "Published" else "Private", modifier = Modifier.size(14.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant, @@ -178,7 +175,7 @@ private fun HighlightPanelCard( if (onPublish != null) { IconButton(onClick = onPublish, modifier = Modifier.size(32.dp)) { Icon( - Icons.Default.Public, + MaterialSymbols.Public, contentDescription = "Publish to relays", modifier = Modifier.size(16.dp), tint = MaterialTheme.colorScheme.primary, @@ -188,7 +185,7 @@ private fun HighlightPanelCard( IconButton(onClick = onEditNote, modifier = Modifier.size(32.dp)) { Icon( - Icons.Default.Edit, + MaterialSymbols.Edit, contentDescription = "Edit note", modifier = Modifier.size(16.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant, @@ -196,7 +193,7 @@ private fun HighlightPanelCard( } IconButton(onClick = onDelete, modifier = Modifier.size(32.dp)) { Icon( - Icons.Default.Delete, + MaterialSymbols.Delete, contentDescription = "Delete", modifier = Modifier.size(16.dp), tint = MaterialTheme.colorScheme.error, diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/highlights/MyHighlightsScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/highlights/MyHighlightsScreen.kt index ff417478e..0c9835404 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/highlights/MyHighlightsScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/highlights/MyHighlightsScreen.kt @@ -32,10 +32,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Delete -import androidx.compose.material.icons.filled.Lock -import androidx.compose.material.icons.filled.Public import androidx.compose.material3.AlertDialog import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults @@ -56,6 +52,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.highlights.HighlightData import com.vitorpamplona.amethyst.commons.ui.components.EmptyState import com.vitorpamplona.amethyst.desktop.service.highlights.DesktopHighlightStore @@ -208,7 +206,7 @@ private fun HighlightCard( color = MaterialTheme.colorScheme.onSurfaceVariant, ) Icon( - imageVector = if (highlight.published) Icons.Default.Public else Icons.Default.Lock, + symbol = if (highlight.published) MaterialSymbols.Public else MaterialSymbols.Lock, contentDescription = if (highlight.published) "Published" else "Private", modifier = Modifier.size(14.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant, @@ -218,7 +216,7 @@ private fun HighlightCard( IconButton(onClick = onDelete) { Icon( - Icons.Default.Delete, + MaterialSymbols.Delete, contentDescription = "Delete highlight", tint = MaterialTheme.colorScheme.error, ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/AudioPlayer.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/AudioPlayer.kt index c02f4167b..0b9394d0a 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/AudioPlayer.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/AudioPlayer.kt @@ -27,10 +27,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.MusicNote -import androidx.compose.material.icons.filled.Pause -import androidx.compose.material.icons.filled.PlayArrow import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -43,6 +39,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.desktop.service.media.GlobalMediaPlayer @Composable @@ -69,7 +67,7 @@ fun AudioPlayer( horizontalArrangement = Arrangement.spacedBy(8.dp), ) { Icon( - Icons.Default.MusicNote, + MaterialSymbols.MusicNote, contentDescription = null, modifier = Modifier.size(20.dp), tint = MaterialTheme.colorScheme.primary, @@ -86,7 +84,7 @@ fun AudioPlayer( modifier = Modifier.size(32.dp), ) { Icon( - if (isPlaying) Icons.Default.Pause else Icons.Default.PlayArrow, + if (isPlaying) MaterialSymbols.Pause else MaterialSymbols.PlayArrow, contentDescription = if (isPlaying) "Pause" else "Play", modifier = Modifier.size(20.dp), ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/LightboxOverlay.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/LightboxOverlay.kt index aa8f267ce..2bf573486 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/LightboxOverlay.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/LightboxOverlay.kt @@ -38,16 +38,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material.icons.automirrored.filled.ArrowForward -import androidx.compose.material.icons.filled.Check -import androidx.compose.material.icons.filled.Close -import androidx.compose.material.icons.filled.ContentCopy -import androidx.compose.material.icons.filled.Error -import androidx.compose.material.icons.filled.MoreVert -import androidx.compose.material.icons.filled.OpenInBrowser -import androidx.compose.material.icons.filled.Save import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.Icon @@ -78,6 +68,8 @@ import androidx.compose.ui.input.key.key import androidx.compose.ui.input.key.onKeyEvent import androidx.compose.ui.input.key.type import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.richtext.RichTextParser import kotlinx.coroutines.delay import kotlinx.coroutines.launch @@ -350,7 +342,7 @@ fun LightboxOverlay( is DownloadState.Done -> { Icon( - Icons.Default.Check, + MaterialSymbols.Check, contentDescription = null, tint = Color.White, modifier = Modifier.size(16.dp), @@ -365,7 +357,7 @@ fun LightboxOverlay( is DownloadState.Failed -> { Icon( - Icons.Default.Error, + MaterialSymbols.Error, contentDescription = null, tint = MaterialTheme.colorScheme.onErrorContainer, modifier = Modifier.size(16.dp), @@ -412,7 +404,7 @@ fun LightboxOverlay( modifier = Modifier.align(Alignment.TopStart).padding(8.dp), ) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = "Close", tint = Color.White, modifier = Modifier.size(32.dp), @@ -443,7 +435,7 @@ fun LightboxOverlay( modifier = Modifier.align(Alignment.CenterStart).padding(16.dp), ) { Icon( - Icons.AutoMirrored.Filled.ArrowBack, + MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = "Previous", tint = Color.White, modifier = Modifier.size(48.dp), @@ -457,7 +449,7 @@ fun LightboxOverlay( modifier = Modifier.align(Alignment.CenterEnd).padding(16.dp), ) { Icon( - Icons.AutoMirrored.Filled.ArrowForward, + MaterialSymbols.AutoMirrored.ArrowForward, contentDescription = "Next", tint = Color.White, modifier = Modifier.size(48.dp), @@ -480,7 +472,7 @@ private fun MoreOptionsMenu( Box { IconButton(onClick = onExpandMenu, modifier = Modifier.size(32.dp)) { Icon( - Icons.Default.MoreVert, + MaterialSymbols.MoreVert, contentDescription = "More options", tint = Color.White, modifier = Modifier.size(20.dp), @@ -493,7 +485,7 @@ private fun MoreOptionsMenu( ) { DropdownMenuItem( text = { Text("Save") }, - leadingIcon = { Icon(Icons.Default.Save, contentDescription = null) }, + leadingIcon = { Icon(MaterialSymbols.Save, contentDescription = null) }, onClick = { onDismissMenu() onSave() @@ -501,7 +493,7 @@ private fun MoreOptionsMenu( ) DropdownMenuItem( text = { Text("Copy URL") }, - leadingIcon = { Icon(Icons.Default.ContentCopy, contentDescription = null) }, + leadingIcon = { Icon(MaterialSymbols.ContentCopy, contentDescription = null) }, onClick = { onDismissMenu() onCopyUrl() @@ -509,7 +501,7 @@ private fun MoreOptionsMenu( ) DropdownMenuItem( text = { Text("Open in Browser") }, - leadingIcon = { Icon(Icons.Default.OpenInBrowser, contentDescription = null) }, + leadingIcon = { Icon(MaterialSymbols.OpenInBrowser, contentDescription = null) }, onClick = { onDismissMenu() onOpenInBrowser() diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/MediaAttachmentRow.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/MediaAttachmentRow.kt index a8713d047..60d810019 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/MediaAttachmentRow.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/MediaAttachmentRow.kt @@ -30,10 +30,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AttachFile -import androidx.compose.material.icons.filled.Close -import androidx.compose.material.icons.filled.ContentPaste import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.LinearProgressIndicator @@ -46,6 +42,8 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.unit.dp import coil3.compose.AsyncImage +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import java.io.File @Composable @@ -63,14 +61,14 @@ fun MediaAttachmentRow( ) { IconButton(onClick = onAttach) { Icon( - Icons.Default.AttachFile, + MaterialSymbols.AttachFile, contentDescription = "Attach media", tint = MaterialTheme.colorScheme.primary, ) } IconButton(onClick = onPaste) { Icon( - Icons.Default.ContentPaste, + MaterialSymbols.ContentPaste, contentDescription = "Paste from clipboard", tint = MaterialTheme.colorScheme.primary, ) @@ -113,7 +111,7 @@ private fun AttachedFileThumbnail( ) IconButton(onClick = onRemove, modifier = Modifier.size(20.dp)) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = "Remove", tint = MaterialTheme.colorScheme.error, modifier = Modifier.size(16.dp), diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/NowPlayingBar.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/NowPlayingBar.kt index 3cb34c20d..4007a958d 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/NowPlayingBar.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/NowPlayingBar.kt @@ -33,15 +33,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.VolumeOff -import androidx.compose.material.icons.automirrored.filled.VolumeUp -import androidx.compose.material.icons.filled.Close -import androidx.compose.material.icons.filled.Fullscreen -import androidx.compose.material.icons.filled.MusicNote -import androidx.compose.material.icons.filled.Pause -import androidx.compose.material.icons.filled.PlayArrow -import androidx.compose.material.icons.filled.Save import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -58,6 +49,8 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.desktop.service.media.GlobalMediaPlayer import kotlinx.coroutines.launch @@ -107,7 +100,7 @@ fun NowPlayingBar(modifier: Modifier = Modifier) { ) } else { Icon( - Icons.Default.MusicNote, + MaterialSymbols.MusicNote, contentDescription = null, modifier = Modifier.size(20.dp), tint = MaterialTheme.colorScheme.primary, @@ -126,7 +119,7 @@ fun NowPlayingBar(modifier: Modifier = Modifier) { modifier = Modifier.size(32.dp), ) { Icon( - if (activeState.isPlaying) Icons.Default.Pause else Icons.Default.PlayArrow, + if (activeState.isPlaying) MaterialSymbols.Pause else MaterialSymbols.PlayArrow, contentDescription = if (activeState.isPlaying) "Pause" else "Play", modifier = Modifier.size(20.dp), ) @@ -185,9 +178,9 @@ fun NowPlayingBar(modifier: Modifier = Modifier) { ) { Icon( if (activeState.isMuted) { - Icons.AutoMirrored.Filled.VolumeOff + MaterialSymbols.AutoMirrored.VolumeOff } else { - Icons.AutoMirrored.Filled.VolumeUp + MaterialSymbols.AutoMirrored.VolumeUp }, contentDescription = if (activeState.isMuted) "Unmute" else "Mute", modifier = Modifier.size(16.dp), @@ -225,7 +218,7 @@ fun NowPlayingBar(modifier: Modifier = Modifier) { modifier = Modifier.size(24.dp), ) { Icon( - Icons.Default.Save, + MaterialSymbols.Save, contentDescription = "Save", modifier = Modifier.size(16.dp), ) @@ -238,7 +231,7 @@ fun NowPlayingBar(modifier: Modifier = Modifier) { modifier = Modifier.size(24.dp), ) { Icon( - Icons.Default.Fullscreen, + MaterialSymbols.Fullscreen, contentDescription = "Fullscreen", modifier = Modifier.size(16.dp), ) @@ -259,7 +252,7 @@ fun NowPlayingBar(modifier: Modifier = Modifier) { modifier = Modifier.size(24.dp), ) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = "Stop", modifier = Modifier.size(16.dp), ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/VideoControls.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/VideoControls.kt index 1dbd20837..835265c1c 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/VideoControls.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/media/VideoControls.kt @@ -34,13 +34,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.VolumeOff -import androidx.compose.material.icons.automirrored.filled.VolumeUp -import androidx.compose.material.icons.filled.Fullscreen -import androidx.compose.material.icons.filled.FullscreenExit -import androidx.compose.material.icons.filled.Pause -import androidx.compose.material.icons.filled.PlayArrow import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -59,6 +52,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.pointer.PointerEventType import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols @Composable fun VideoControls( @@ -112,7 +107,7 @@ fun VideoControls( modifier = Modifier.align(Alignment.Center).size(64.dp), ) { Icon( - Icons.Default.PlayArrow, + MaterialSymbols.PlayArrow, contentDescription = "Play", tint = Color.White, modifier = Modifier.size(48.dp), @@ -158,7 +153,7 @@ fun VideoControls( ) { IconButton(onClick = onPlayPause, modifier = Modifier.size(32.dp)) { Icon( - if (isPlaying) Icons.Default.Pause else Icons.Default.PlayArrow, + if (isPlaying) MaterialSymbols.Pause else MaterialSymbols.PlayArrow, contentDescription = if (isPlaying) "Pause" else "Play", tint = Color.White, modifier = Modifier.size(20.dp), @@ -179,9 +174,9 @@ fun VideoControls( IconButton(onClick = onMuteToggle, modifier = Modifier.size(32.dp)) { Icon( if (isMuted) { - Icons.AutoMirrored.Filled.VolumeOff + MaterialSymbols.AutoMirrored.VolumeOff } else { - Icons.AutoMirrored.Filled.VolumeUp + MaterialSymbols.AutoMirrored.VolumeUp }, contentDescription = if (isMuted) "Unmute" else "Mute", tint = Color.White, @@ -216,9 +211,9 @@ fun VideoControls( ) { Icon( if (viewMode == ViewMode.FULLSCREEN) { - Icons.Default.FullscreenExit + MaterialSymbols.FullscreenExit } else { - Icons.Default.Fullscreen + MaterialSymbols.Fullscreen }, contentDescription = if (viewMode == ViewMode.FULLSCREEN) "Exit fullscreen" else "Fullscreen", @@ -229,7 +224,7 @@ fun VideoControls( } else if (onFullscreen != null) { IconButton(onClick = onFullscreen, modifier = Modifier.size(32.dp)) { Icon( - Icons.Default.Fullscreen, + MaterialSymbols.Fullscreen, contentDescription = "Fullscreen", tint = Color.White, modifier = Modifier.size(20.dp), diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/BlockedRelayEditor.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/BlockedRelayEditor.kt index 31b3531f4..ec3bda2f5 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/BlockedRelayEditor.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/BlockedRelayEditor.kt @@ -29,9 +29,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Close import androidx.compose.material3.Button import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -53,6 +50,8 @@ import androidx.compose.ui.input.key.key import androidx.compose.ui.input.key.onPreviewKeyEvent import androidx.compose.ui.input.key.type import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.nip01Core.relay.normalizer.displayUrl @@ -117,7 +116,7 @@ fun BlockedRelayEditor( if (error == null) newRelayUrl = "" }, ) { - Icon(Icons.Default.Add, contentDescription = "Add relay") + Icon(MaterialSymbols.Add, contentDescription = "Add relay") } } @@ -142,7 +141,7 @@ fun BlockedRelayEditor( ) IconButton(onClick = { localRelays.remove(url) }, modifier = Modifier.size(28.dp)) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = "Remove", modifier = Modifier.size(16.dp), ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/DmRelayEditor.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/DmRelayEditor.kt index 1842d37ab..c8479f88b 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/DmRelayEditor.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/DmRelayEditor.kt @@ -29,9 +29,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Close import androidx.compose.material3.Button import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -55,6 +52,8 @@ import androidx.compose.ui.input.key.key import androidx.compose.ui.input.key.onPreviewKeyEvent import androidx.compose.ui.input.key.type import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.nip01Core.relay.normalizer.displayUrl @@ -139,7 +138,7 @@ fun DmRelayEditor( if (error == null) newRelayUrl = "" }, ) { - Icon(Icons.Default.Add, contentDescription = "Add relay") + Icon(MaterialSymbols.Add, contentDescription = "Add relay") } } @@ -156,7 +155,7 @@ fun DmRelayEditor( ) IconButton(onClick = { localRelays.remove(url) }, modifier = Modifier.size(28.dp)) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = "Remove", modifier = Modifier.size(16.dp), ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/Nip65RelayEditor.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/Nip65RelayEditor.kt index 57119a556..37c3fc491 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/Nip65RelayEditor.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/Nip65RelayEditor.kt @@ -29,9 +29,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Close import androidx.compose.material3.Button import androidx.compose.material3.FilterChip import androidx.compose.material3.Icon @@ -57,6 +54,8 @@ import androidx.compose.ui.input.key.key import androidx.compose.ui.input.key.onPreviewKeyEvent import androidx.compose.ui.input.key.type import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.nip65RelayList.Nip65RelayListState import com.vitorpamplona.amethyst.desktop.network.DefaultRelays import com.vitorpamplona.quartz.nip01Core.core.Event @@ -163,7 +162,7 @@ fun Nip65RelayEditor( if (error == null) newRelayUrl = "" }, ) { - Icon(Icons.Default.Add, contentDescription = "Add relay") + Icon(MaterialSymbols.Add, contentDescription = "Add relay") } } @@ -206,7 +205,7 @@ fun Nip65RelayEditor( IconButton(onClick = { localRelays.remove(relay) }, modifier = Modifier.size(28.dp)) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = "Remove", modifier = Modifier.size(16.dp), ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayConfigTab.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayConfigTab.kt index d8969f2bd..ea22d6b16 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayConfigTab.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayConfigTab.kt @@ -31,9 +31,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ChevronRight -import androidx.compose.material.icons.filled.ExpandMore import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -47,6 +44,8 @@ import androidx.compose.runtime.snapshots.SnapshotStateList import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.model.nip65RelayList.Nip65RelayListState import com.vitorpamplona.amethyst.desktop.model.DesktopAccountRelays import com.vitorpamplona.amethyst.desktop.network.DesktopRelayConnectionManager @@ -185,7 +184,7 @@ private fun CollapsibleSection( verticalAlignment = Alignment.CenterVertically, ) { Icon( - if (expanded) Icons.Default.ExpandMore else Icons.Default.ChevronRight, + if (expanded) MaterialSymbols.ExpandMore else MaterialSymbols.ChevronRight, contentDescription = null, tint = MaterialTheme.colorScheme.onSurfaceVariant, ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayListEditor.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayListEditor.kt index 8cc6fe5b2..3c9e6a4dd 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayListEditor.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayListEditor.kt @@ -28,10 +28,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Circle -import androidx.compose.material.icons.filled.Close import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -50,6 +46,8 @@ import androidx.compose.ui.input.key.key import androidx.compose.ui.input.key.onPreviewKeyEvent import androidx.compose.ui.input.key.type import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.nip01Core.relay.normalizer.RelayUrlNormalizer import com.vitorpamplona.quartz.nip01Core.relay.normalizer.displayUrl @@ -104,7 +102,7 @@ fun RelayListEditor( if (error == null) newRelayUrl = "" }, ) { - Icon(Icons.Default.Add, contentDescription = "Add relay") + Icon(MaterialSymbols.Add, contentDescription = "Add relay") } } @@ -118,7 +116,7 @@ fun RelayListEditor( ) { Row(verticalAlignment = Alignment.CenterVertically) { Icon( - Icons.Default.Circle, + MaterialSymbols.Circle, contentDescription = null, modifier = Modifier.size(8.dp), tint = @@ -144,7 +142,7 @@ fun RelayListEditor( } IconButton(onClick = { onRemove(url) }, modifier = Modifier.size(28.dp)) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = "Remove", modifier = Modifier.size(16.dp), ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayMetricCard.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayMetricCard.kt index ee2f870cc..4ae586b88 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayMetricCard.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayMetricCard.kt @@ -30,8 +30,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Circle import androidx.compose.material3.Card import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -42,6 +40,8 @@ import androidx.compose.runtime.produceState import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.desktop.network.Nip11Fetcher import com.vitorpamplona.amethyst.desktop.network.RelayMetrics import com.vitorpamplona.amethyst.desktop.network.RelayStatus @@ -75,7 +75,7 @@ fun RelayMetricCard( Row(verticalAlignment = Alignment.CenterVertically) { // Status indicator Icon( - Icons.Default.Circle, + MaterialSymbols.Circle, contentDescription = if (status.connected) "Connected" else "Disconnected", modifier = Modifier.size(10.dp), tint = diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayMetricsTab.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayMetricsTab.kt index d20025577..cdda77c4d 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayMetricsTab.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayMetricsTab.kt @@ -30,8 +30,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Refresh import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -45,6 +43,8 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.desktop.network.DesktopRelayConnectionManager import com.vitorpamplona.amethyst.desktop.network.Nip11Fetcher import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl @@ -84,7 +84,7 @@ fun RelayMetricsTab( relayManager.disconnect() relayManager.connect() }) { - Icon(Icons.Default.Refresh, contentDescription = "Reconnect all") + Icon(MaterialSymbols.Refresh, contentDescription = "Reconnect all") } } diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayStatusCard.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayStatusCard.kt index 06b8b8a19..cbe02e60e 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayStatusCard.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/RelayStatusCard.kt @@ -26,9 +26,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Check -import androidx.compose.material.icons.filled.Close import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.CircularProgressIndicator @@ -41,6 +38,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.tor.TorServiceStatus import com.vitorpamplona.amethyst.desktop.network.RelayStatus import com.vitorpamplona.amethyst.desktop.ui.tor.LocalTorState @@ -82,14 +81,14 @@ fun RelayStatusCard( if (status.connected) { Icon( - Icons.Default.Check, + MaterialSymbols.Check, contentDescription = "Connected", tint = statusColor, modifier = Modifier.size(20.dp), ) } else if (status.error != null) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = "Error", tint = statusColor, modifier = Modifier.size(20.dp), @@ -148,7 +147,7 @@ fun RelayStatusCard( IconButton(onClick = onRemove) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = "Remove relay", tint = MaterialTheme.colorScheme.onSurfaceVariant, ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/SearchRelayEditor.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/SearchRelayEditor.kt index 160354357..1c6ffedbc 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/SearchRelayEditor.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/relay/SearchRelayEditor.kt @@ -29,9 +29,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Close import androidx.compose.material3.Button import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -54,6 +51,8 @@ import androidx.compose.ui.input.key.key import androidx.compose.ui.input.key.onPreviewKeyEvent import androidx.compose.ui.input.key.type import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.nip01Core.relay.normalizer.displayUrl @@ -118,7 +117,7 @@ fun SearchRelayEditor( if (error == null) newRelayUrl = "" }, ) { - Icon(Icons.Default.Add, contentDescription = "Add relay") + Icon(MaterialSymbols.Add, contentDescription = "Add relay") } } @@ -143,7 +142,7 @@ fun SearchRelayEditor( ) IconButton(onClick = { localRelays.remove(url) }, modifier = Modifier.size(28.dp)) { Icon( - Icons.Default.Close, + MaterialSymbols.Close, contentDescription = "Remove", modifier = Modifier.size(16.dp), ) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/search/AdvancedSearchPanel.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/search/AdvancedSearchPanel.kt index 4b18918c4..b64ee4072 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/search/AdvancedSearchPanel.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/search/AdvancedSearchPanel.kt @@ -31,9 +31,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Close import androidx.compose.material3.AssistChip import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults @@ -56,6 +53,8 @@ import androidx.compose.ui.input.key.Key import androidx.compose.ui.input.key.key import androidx.compose.ui.input.key.onKeyEvent import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.search.ContentPreset import com.vitorpamplona.amethyst.commons.search.DateUtils import com.vitorpamplona.amethyst.commons.search.KindRegistry @@ -215,7 +214,7 @@ private fun AuthorInputField( ) }, trailingIcon = { - Icon(Icons.Default.Close, contentDescription = "Remove", modifier = Modifier.size(14.dp)) + Icon(MaterialSymbols.Close, contentDescription = "Remove", modifier = Modifier.size(14.dp)) }, ) } @@ -244,7 +243,7 @@ private fun AuthorInputField( onAuthorAdded(authorInput.trim()) authorInput = "" }) { - Icon(Icons.Default.Add, contentDescription = "Add author") + Icon(MaterialSymbols.Add, contentDescription = "Add author") } } }, @@ -349,7 +348,7 @@ private fun ChipGroupWithInput( onClick = { onRemove(item) }, label = { Text("$prefix$item", style = MaterialTheme.typography.bodySmall) }, trailingIcon = { - Icon(Icons.Default.Close, contentDescription = "Remove", modifier = Modifier.size(14.dp)) + Icon(MaterialSymbols.Close, contentDescription = "Remove", modifier = Modifier.size(14.dp)) }, ) } diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/search/SearchResultsList.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/search/SearchResultsList.kt index 2a50d2ce8..074559532 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/search/SearchResultsList.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/search/SearchResultsList.kt @@ -34,12 +34,6 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.Article -import androidx.compose.material.icons.filled.Description -import androidx.compose.material.icons.filled.ExpandMore -import androidx.compose.material.icons.filled.Forum -import androidx.compose.material.icons.filled.Person import androidx.compose.material3.FilterChip import androidx.compose.material3.FilterChipDefaults import androidx.compose.material3.HorizontalDivider @@ -58,8 +52,10 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.rotate -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.search.AdvancedSearchBarState import com.vitorpamplona.amethyst.commons.search.SearchSortOrder import com.vitorpamplona.amethyst.commons.ui.components.UserSearchCard @@ -106,7 +102,7 @@ fun SearchResultsList( SortableHeader( title = "People", count = people.size, - icon = Icons.Default.Person, + icon = MaterialSymbols.Person, options = SearchSortOrder.PEOPLE_OPTIONS, selected = peopleSortOrder, onSelect = { state.updatePeopleSortOrder(it) }, @@ -147,7 +143,7 @@ fun SearchResultsList( SortableHeader( title = "Notes", count = textNotes.size, - icon = Icons.Default.Description, + icon = MaterialSymbols.Description, options = SearchSortOrder.EVENT_OPTIONS, selected = eventSortOrder, onSelect = { state.updateEventSortOrder(it) }, @@ -192,7 +188,7 @@ fun SearchResultsList( SortableHeader( title = "Articles", count = articles.size, - icon = Icons.AutoMirrored.Default.Article, + icon = MaterialSymbols.AutoMirrored.Article, options = SearchSortOrder.EVENT_OPTIONS, selected = eventSortOrder, onSelect = { state.updateEventSortOrder(it) }, @@ -234,7 +230,7 @@ fun SearchResultsList( SortableHeader( title = "Other", count = otherNotes.size, - icon = Icons.Default.Forum, + icon = MaterialSymbols.Forum, options = SearchSortOrder.EVENT_OPTIONS, selected = eventSortOrder, onSelect = { state.updateEventSortOrder(it) }, @@ -264,7 +260,7 @@ fun SearchResultsList( private fun SortableHeader( title: String, count: Int, - icon: ImageVector, + icon: MaterialSymbol, options: List, selected: SearchSortOrder, onSelect: (SearchSortOrder) -> Unit, @@ -282,7 +278,7 @@ private fun SortableHeader( modifier = Modifier.clickable(onClick = onToggleCollapse).padding(vertical = 4.dp), ) { Icon( - Icons.Default.ExpandMore, + MaterialSymbols.ExpandMore, contentDescription = if (collapsed) "Expand $title" else "Collapse $title", modifier = Modifier.size(18.dp).rotate(chevronRotation), tint = MaterialTheme.colorScheme.onSurfaceVariant, @@ -343,7 +339,7 @@ private fun ExpandableSection( onClick = { expanded = true }, modifier = Modifier.fillMaxWidth(), ) { - Icon(Icons.Default.ExpandMore, contentDescription = null, modifier = Modifier.size(16.dp)) + Icon(MaterialSymbols.ExpandMore, contentDescription = null, modifier = Modifier.size(16.dp)) Text("Show all ${remaining.size} more") } } diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/search/SearchSyncBanner.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/search/SearchSyncBanner.kt index 348dcaf0f..381f023c6 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/search/SearchSyncBanner.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/search/SearchSyncBanner.kt @@ -32,13 +32,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.CheckCircle -import androidx.compose.material.icons.filled.CloudDownload -import androidx.compose.material.icons.filled.Error -import androidx.compose.material.icons.filled.ExpandLess -import androidx.compose.material.icons.filled.ExpandMore -import androidx.compose.material.icons.filled.HourglassEmpty import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -51,11 +44,13 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.commons.chess.RelaySyncState import com.vitorpamplona.amethyst.commons.chess.RelaySyncStatus +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbol +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import kotlinx.collections.immutable.ImmutableList @Composable @@ -103,7 +98,7 @@ fun SearchSyncBanner( ) Icon( - imageVector = if (isExpanded) Icons.Default.ExpandLess else Icons.Default.ExpandMore, + symbol = if (isExpanded) MaterialSymbols.ExpandLess else MaterialSymbols.ExpandMore, contentDescription = if (isExpanded) "Collapse" else "Expand", tint = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.size(16.dp), @@ -132,7 +127,7 @@ fun SearchSyncBanner( modifier = Modifier.fillMaxWidth(), ) { Icon( - imageVector = relayStatusIcon(relay.status), + symbol = relayStatusIcon(relay.status), contentDescription = null, tint = relayStatusColor(relay.status), modifier = Modifier.size(14.dp), @@ -159,13 +154,13 @@ fun SearchSyncBanner( } } -private fun relayStatusIcon(status: RelaySyncStatus): ImageVector = +private fun relayStatusIcon(status: RelaySyncStatus): MaterialSymbol = when (status) { - RelaySyncStatus.CONNECTING -> Icons.Default.HourglassEmpty - RelaySyncStatus.WAITING -> Icons.Default.HourglassEmpty - RelaySyncStatus.RECEIVING -> Icons.Default.CloudDownload - RelaySyncStatus.EOSE_RECEIVED -> Icons.Default.CheckCircle - RelaySyncStatus.FAILED -> Icons.Default.Error + RelaySyncStatus.CONNECTING -> MaterialSymbols.HourglassEmpty + RelaySyncStatus.WAITING -> MaterialSymbols.HourglassEmpty + RelaySyncStatus.RECEIVING -> MaterialSymbols.CloudDownload + RelaySyncStatus.EOSE_RECEIVED -> MaterialSymbols.CheckCircle + RelaySyncStatus.FAILED -> MaterialSymbols.Error } @Composable diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/settings/MediaServerSettings.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/settings/MediaServerSettings.kt index d05d3ff04..15bdea390 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/settings/MediaServerSettings.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/settings/MediaServerSettings.kt @@ -31,10 +31,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Delete -import androidx.compose.material.icons.filled.Refresh import androidx.compose.material3.Button import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults @@ -64,6 +60,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.desktop.service.media.ServerHealthCheck import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.launch @@ -173,7 +171,7 @@ fun MediaServerSettings( }, enabled = newServerUrl.isNotBlank() && isValidServerUrl(newServerUrl.trim()), ) { - Icon(Icons.Default.Add, contentDescription = "Add") + Icon(MaterialSymbols.Add, contentDescription = "Add") Spacer(Modifier.width(4.dp)) Text("Add") } @@ -203,7 +201,7 @@ fun MediaServerSettings( if (isChecking) { CircularProgressIndicator(modifier = Modifier.size(16.dp)) } else { - Icon(Icons.Default.Refresh, contentDescription = "Refresh") + Icon(MaterialSymbols.Refresh, contentDescription = "Refresh") } Spacer(Modifier.width(4.dp)) Text("Check All") @@ -295,7 +293,7 @@ private fun ServerRow( IconButton(onClick = onRefresh) { Icon( - Icons.Default.Refresh, + MaterialSymbols.Refresh, contentDescription = "Refresh", modifier = Modifier.size(18.dp), ) @@ -303,7 +301,7 @@ private fun ServerRow( IconButton(onClick = onRemove) { Icon( - Icons.Default.Delete, + MaterialSymbols.Delete, contentDescription = "Remove", modifier = Modifier.size(18.dp), tint = MaterialTheme.colorScheme.error, diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/tor/TorStatusIndicator.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/tor/TorStatusIndicator.kt index 3eb57188b..e0e87ee40 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/tor/TorStatusIndicator.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/tor/TorStatusIndicator.kt @@ -26,9 +26,6 @@ import androidx.compose.foundation.TooltipPlacement import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Shield -import androidx.compose.material.icons.outlined.Shield import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -40,6 +37,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.dp +import com.vitorpamplona.amethyst.commons.icons.symbols.Icon +import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.commons.tor.TorServiceStatus /** @@ -56,19 +55,19 @@ fun TorStatusIndicator( val (icon, tint, tooltip) = when (status) { is TorServiceStatus.Off -> { - Triple(Icons.Outlined.Shield, Color.Gray, "Tor: Off") + Triple(MaterialSymbols.Shield, Color.Gray, "Tor: Off") } is TorServiceStatus.Connecting -> { - Triple(Icons.Filled.Shield, Color(0xFFFFB300), "Tor: Connecting...") + Triple(MaterialSymbols.Shield, Color(0xFFFFB300), "Tor: Connecting...") } is TorServiceStatus.Active -> { - Triple(Icons.Filled.Shield, Color(0xFF4CAF50), "Tor: Connected") + Triple(MaterialSymbols.Shield, Color(0xFF4CAF50), "Tor: Connected") } is TorServiceStatus.Error -> { - Triple(Icons.Outlined.Shield, Color(0xFFF44336), "Tor: ${status.message}") + Triple(MaterialSymbols.Shield, Color(0xFFF44336), "Tor: ${status.message}") } } @@ -91,7 +90,7 @@ fun TorStatusIndicator( if (onClick != null) { IconButton(onClick = onClick, modifier = modifier.size(28.dp)) { Icon( - imageVector = icon, + symbol = icon, contentDescription = tooltip, tint = tint, modifier = Modifier.size(20.dp), @@ -99,7 +98,7 @@ fun TorStatusIndicator( } } else { Icon( - imageVector = icon, + symbol = icon, contentDescription = tooltip, tint = tint, modifier = modifier.size(20.dp),