Switch to Material Symbols and use Valkyrie for ImageVector generation (#3873)

* Add material symbols icon module

Assisted-by: Claude:claude-opus-5

* Replace material icons with material symbols

Assisted-by: Claude:claude-opus-5

* Add simple icons module and migrate CustomIcons

Assisted-by: Claude:claude-opus-5
This commit is contained in:
AntsyLich
2026-08-29 21:39:55 +06:00
committed by GitHub
parent bb24e904a9
commit b695940114
224 changed files with 1449 additions and 1083 deletions
+2 -1
View File
@@ -208,6 +208,8 @@ dependencies {
baselineProfile(projects.baselineProfile) baselineProfile(projects.baselineProfile)
implementation(projects.i18n) implementation(projects.i18n)
implementation(projects.icons.materialSymbols)
implementation(projects.icons.simpleIcons)
implementation(projects.core.archive) implementation(projects.core.archive)
implementation(projects.core.common) implementation(projects.core.common)
implementation(projects.core.metro) implementation(projects.core.metro)
@@ -224,7 +226,6 @@ dependencies {
implementation(libs.androidx.activity.compose) implementation(libs.androidx.activity.compose)
implementation(libs.androidx.compose.foundation) implementation(libs.androidx.compose.foundation)
implementation(libs.androidx.compose.material3) implementation(libs.androidx.compose.material3)
implementation(libs.androidx.compose.materialIcons)
implementation(libs.androidx.compose.animation) implementation(libs.androidx.compose.animation)
implementation(libs.androidx.compose.animationGraphics) implementation(libs.androidx.compose.animationGraphics)
debugImplementation(libs.androidx.compose.uiTooling) debugImplementation(libs.androidx.compose.uiTooling)
@@ -3,10 +3,6 @@ package eu.kanade.presentation.browse
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.HelpOutline
import androidx.compose.material.icons.outlined.Public
import androidx.compose.material.icons.outlined.Refresh
import androidx.compose.material3.SnackbarDuration import androidx.compose.material3.SnackbarDuration
import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.SnackbarResult import androidx.compose.material3.SnackbarResult
@@ -23,6 +19,10 @@ import eu.kanade.presentation.components.AppBar
import eu.kanade.presentation.util.formattedMessage import eu.kanade.presentation.util.formattedMessage
import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.Source
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.Help
import mihon.icons.materialsymbols.rounded.Public
import mihon.icons.materialsymbols.rounded.Refresh
import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.common.i18n.stringResource
import tachiyomi.domain.library.model.LibraryDisplayMode import tachiyomi.domain.library.model.LibraryDisplayMode
import tachiyomi.domain.manga.model.Manga import tachiyomi.domain.manga.model.Manga
@@ -88,7 +88,7 @@ fun BrowseSourceContent(
listOf( listOf(
EmptyScreenAction( EmptyScreenAction(
stringRes = MR.strings.local_source_help_guide, stringRes = MR.strings.local_source_help_guide,
icon = Icons.AutoMirrored.Outlined.HelpOutline, icon = MaterialSymbols.AutoMirroredRounded.Help,
onClick = onLocalSourceHelpClick, onClick = onLocalSourceHelpClick,
), ),
) )
@@ -96,17 +96,17 @@ fun BrowseSourceContent(
listOf( listOf(
EmptyScreenAction( EmptyScreenAction(
stringRes = MR.strings.action_retry, stringRes = MR.strings.action_retry,
icon = Icons.Outlined.Refresh, icon = MaterialSymbols.Rounded.Refresh,
onClick = mangaList::refresh, onClick = mangaList::refresh,
), ),
EmptyScreenAction( EmptyScreenAction(
stringRes = MR.strings.action_open_in_web_view, stringRes = MR.strings.action_open_in_web_view,
icon = Icons.Outlined.Public, icon = MaterialSymbols.Rounded.Public,
onClick = onWebViewClick, onClick = onWebViewClick,
), ),
EmptyScreenAction( EmptyScreenAction(
stringRes = MR.strings.label_help, stringRes = MR.strings.label_help,
icon = Icons.AutoMirrored.Outlined.HelpOutline, icon = MaterialSymbols.AutoMirroredRounded.Help,
onClick = onHelpClick, onClick = onHelpClick,
), ),
) )
@@ -14,9 +14,6 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.Launch
import androidx.compose.material.icons.outlined.Settings
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
@@ -56,6 +53,9 @@ import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsViewModel import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsViewModel
import eu.kanade.tachiyomi.util.system.LocaleHelper import eu.kanade.tachiyomi.util.system.LocaleHelper
import eu.kanade.tachiyomi.util.system.copyToClipboard import eu.kanade.tachiyomi.util.system.copyToClipboard
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.OpenInNew
import mihon.icons.materialsymbols.rounded.Settings
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.ScrollbarLazyColumn import tachiyomi.presentation.core.components.ScrollbarLazyColumn
import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.components.material.Scaffold
@@ -97,7 +97,7 @@ fun ExtensionDetailsScreen(
add( add(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_open_repo), title = stringResource(MR.strings.action_open_repo),
icon = Icons.AutoMirrored.Outlined.Launch, icon = MaterialSymbols.AutoMirroredRounded.OpenInNew,
onClick = { onClick = {
uriHandler.openUri(url) uriHandler.openUri(url)
}, },
@@ -425,7 +425,7 @@ private fun SourceSwitchPreference(
if (source.source is ConfigurableSource) { if (source.source is ConfigurableSource) {
IconButton(onClick = { onClickSourcePreferences(source.source.id) }) { IconButton(onClick = { onClickSourcePreferences(source.source.id) }) {
Icon( Icon(
imageVector = Icons.Outlined.Settings, imageVector = MaterialSymbols.Rounded.Settings,
contentDescription = stringResource(MR.strings.label_settings), contentDescription = stringResource(MR.strings.label_settings),
tint = MaterialTheme.colorScheme.onSurface, tint = MaterialTheme.colorScheme.onSurface,
) )
@@ -13,13 +13,6 @@ import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Close
import androidx.compose.material.icons.outlined.GetApp
import androidx.compose.material.icons.outlined.Public
import androidx.compose.material.icons.outlined.Refresh
import androidx.compose.material.icons.outlined.Settings
import androidx.compose.material.icons.outlined.VerifiedUser
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.CircularProgressIndicator
@@ -55,6 +48,13 @@ import eu.kanade.tachiyomi.ui.browse.extension.ExtensionUiModel
import eu.kanade.tachiyomi.ui.browse.extension.ExtensionsViewModel import eu.kanade.tachiyomi.ui.browse.extension.ExtensionsViewModel
import eu.kanade.tachiyomi.util.system.LocaleHelper import eu.kanade.tachiyomi.util.system.LocaleHelper
import eu.kanade.tachiyomi.util.system.launchRequestPackageInstallsPermission import eu.kanade.tachiyomi.util.system.launchRequestPackageInstallsPermission
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.Download
import mihon.icons.materialsymbols.rounded.Public
import mihon.icons.materialsymbols.rounded.Refresh
import mihon.icons.materialsymbols.rounded.Settings
import mihon.icons.materialsymbols.rounded.VerifiedUser
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.FastScrollLazyColumn import tachiyomi.presentation.core.components.FastScrollLazyColumn
import tachiyomi.presentation.core.components.material.PullRefresh import tachiyomi.presentation.core.components.material.PullRefresh
@@ -105,7 +105,7 @@ fun ExtensionScreen(
actions = listOf( actions = listOf(
EmptyScreenAction( EmptyScreenAction(
stringRes = MR.strings.extensionStores, stringRes = MR.strings.extensionStores,
icon = Icons.Outlined.Settings, icon = MaterialSymbols.Rounded.Settings,
onClick = { navigator.push(ExtensionStoresScreen()) }, onClick = { navigator.push(ExtensionStoresScreen()) },
), ),
), ),
@@ -425,7 +425,7 @@ private fun ExtensionItemActions(
!isIdle -> { !isIdle -> {
IconButton(onClick = { onClickItemCancel(extension) }) { IconButton(onClick = { onClickItemCancel(extension) }) {
Icon( Icon(
imageVector = Icons.Outlined.Close, imageVector = MaterialSymbols.Rounded.Close,
contentDescription = stringResource(MR.strings.action_cancel), contentDescription = stringResource(MR.strings.action_cancel),
) )
} }
@@ -433,7 +433,7 @@ private fun ExtensionItemActions(
installStep == InstallStep.Error -> { installStep == InstallStep.Error -> {
IconButton(onClick = { onClickItemAction(extension) }) { IconButton(onClick = { onClickItemAction(extension) }) {
Icon( Icon(
imageVector = Icons.Outlined.Refresh, imageVector = MaterialSymbols.Rounded.Refresh,
contentDescription = stringResource(MR.strings.action_retry), contentDescription = stringResource(MR.strings.action_retry),
) )
} }
@@ -443,7 +443,7 @@ private fun ExtensionItemActions(
is Extension.Installed -> { is Extension.Installed -> {
IconButton(onClick = { onClickItemSecondaryAction(extension) }) { IconButton(onClick = { onClickItemSecondaryAction(extension) }) {
Icon( Icon(
imageVector = Icons.Outlined.Settings, imageVector = MaterialSymbols.Rounded.Settings,
contentDescription = stringResource(MR.strings.action_settings), contentDescription = stringResource(MR.strings.action_settings),
) )
} }
@@ -451,7 +451,7 @@ private fun ExtensionItemActions(
if (extension.hasUpdate) { if (extension.hasUpdate) {
IconButton(onClick = { onClickItemAction(extension) }) { IconButton(onClick = { onClickItemAction(extension) }) {
Icon( Icon(
imageVector = Icons.Outlined.GetApp, imageVector = MaterialSymbols.Rounded.Download,
contentDescription = stringResource(MR.strings.ext_update), contentDescription = stringResource(MR.strings.ext_update),
) )
} }
@@ -460,7 +460,7 @@ private fun ExtensionItemActions(
is Extension.Untrusted -> { is Extension.Untrusted -> {
IconButton(onClick = { onClickItemAction(extension) }) { IconButton(onClick = { onClickItemAction(extension) }) {
Icon( Icon(
imageVector = Icons.Outlined.VerifiedUser, imageVector = MaterialSymbols.Rounded.VerifiedUser,
contentDescription = stringResource(MR.strings.ext_trust), contentDescription = stringResource(MR.strings.ext_trust),
) )
} }
@@ -471,7 +471,7 @@ private fun ExtensionItemActions(
onClick = { onClickItemSecondaryAction(extension) }, onClick = { onClickItemSecondaryAction(extension) },
) { ) {
Icon( Icon(
imageVector = Icons.Outlined.Public, imageVector = MaterialSymbols.Rounded.Public,
contentDescription = stringResource(MR.strings.action_open_in_web_view), contentDescription = stringResource(MR.strings.action_open_in_web_view),
) )
} }
@@ -479,7 +479,7 @@ private fun ExtensionItemActions(
IconButton(onClick = { onClickItemAction(extension) }) { IconButton(onClick = { onClickItemAction(extension) }) {
Icon( Icon(
imageVector = Icons.Outlined.GetApp, imageVector = MaterialSymbols.Rounded.Download,
contentDescription = stringResource(MR.strings.ext_install), contentDescription = stringResource(MR.strings.ext_install),
) )
} }
@@ -7,11 +7,6 @@ import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.ArrowDownward
import androidx.compose.material.icons.outlined.ArrowUpward
import androidx.compose.material.icons.outlined.Numbers
import androidx.compose.material.icons.outlined.SortByAlpha
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -26,6 +21,11 @@ import eu.kanade.presentation.browse.components.BaseSourceItem
import eu.kanade.presentation.browse.components.SourceIcon import eu.kanade.presentation.browse.components.SourceIcon
import eu.kanade.tachiyomi.ui.browse.migration.sources.MigrateSourceViewModel import eu.kanade.tachiyomi.ui.browse.migration.sources.MigrateSourceViewModel
import eu.kanade.tachiyomi.util.system.copyToClipboard import eu.kanade.tachiyomi.util.system.copyToClipboard
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.ArrowDownward
import mihon.icons.materialsymbols.rounded.ArrowUpward
import mihon.icons.materialsymbols.rounded.Numbers
import mihon.icons.materialsymbols.rounded.SortByAlpha
import tachiyomi.domain.source.model.Source import tachiyomi.domain.source.model.Source
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.Badge import tachiyomi.presentation.core.components.Badge
@@ -103,11 +103,11 @@ private fun MigrateSourceList(
IconButton(onClick = onToggleSortingMode) { IconButton(onClick = onToggleSortingMode) {
when (sortingMode) { when (sortingMode) {
SetMigrateSorting.Mode.ALPHABETICAL -> Icon( SetMigrateSorting.Mode.ALPHABETICAL -> Icon(
Icons.Outlined.SortByAlpha, MaterialSymbols.Rounded.SortByAlpha,
contentDescription = stringResource(MR.strings.action_sort_alpha), contentDescription = stringResource(MR.strings.action_sort_alpha),
) )
SetMigrateSorting.Mode.TOTAL -> Icon( SetMigrateSorting.Mode.TOTAL -> Icon(
Icons.Outlined.Numbers, MaterialSymbols.Rounded.Numbers,
contentDescription = stringResource(MR.strings.action_sort_count), contentDescription = stringResource(MR.strings.action_sort_count),
) )
} }
@@ -115,11 +115,11 @@ private fun MigrateSourceList(
IconButton(onClick = onToggleSortingDirection) { IconButton(onClick = onToggleSortingDirection) {
when (sortingDirection) { when (sortingDirection) {
SetMigrateSorting.Direction.ASCENDING -> Icon( SetMigrateSorting.Direction.ASCENDING -> Icon(
Icons.Outlined.ArrowUpward, MaterialSymbols.Rounded.ArrowUpward,
contentDescription = stringResource(MR.strings.action_asc), contentDescription = stringResource(MR.strings.action_asc),
) )
SetMigrateSorting.Direction.DESCENDING -> Icon( SetMigrateSorting.Direction.DESCENDING -> Icon(
Icons.Outlined.ArrowDownward, MaterialSymbols.Rounded.ArrowDownward,
contentDescription = stringResource(MR.strings.action_desc), contentDescription = stringResource(MR.strings.action_desc),
) )
} }
@@ -6,9 +6,6 @@ import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.PushPin
import androidx.compose.material.icons.outlined.PushPin
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
@@ -24,6 +21,9 @@ import eu.kanade.presentation.browse.components.BaseSourceItem
import eu.kanade.tachiyomi.ui.browse.source.SourcesViewModel import eu.kanade.tachiyomi.ui.browse.source.SourcesViewModel
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceViewModel.Listing import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceViewModel.Listing
import eu.kanade.tachiyomi.util.system.LocaleHelper import eu.kanade.tachiyomi.util.system.LocaleHelper
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.PushPin
import mihon.icons.materialsymbols.roundedfilled.PushPin
import tachiyomi.domain.source.model.Pin import tachiyomi.domain.source.model.Pin
import tachiyomi.domain.source.model.Source import tachiyomi.domain.source.model.Source
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
@@ -143,7 +143,7 @@ private fun SourcePinButton(
isPinned: Boolean, isPinned: Boolean,
onClick: () -> Unit, onClick: () -> Unit,
) { ) {
val icon = if (isPinned) Icons.Filled.PushPin else Icons.Outlined.PushPin val icon = if (isPinned) MaterialSymbols.RoundedFilled.PushPin else MaterialSymbols.Rounded.PushPin
val tint = if (isPinned) { val tint = if (isPinned) {
MaterialTheme.colorScheme.primary MaterialTheme.colorScheme.primary
} else { } else {
@@ -1,15 +1,15 @@
package eu.kanade.presentation.browse.components package eu.kanade.presentation.browse.components
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.CollectionsBookmark
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.CollectionsBookmark
import tachiyomi.presentation.core.components.Badge import tachiyomi.presentation.core.components.Badge
@Composable @Composable
internal fun InLibraryBadge(enabled: Boolean) { internal fun InLibraryBadge(enabled: Boolean) {
if (enabled) { if (enabled) {
Badge( Badge(
imageVector = Icons.Outlined.CollectionsBookmark, imageVector = MaterialSymbols.Rounded.CollectionsBookmark,
) )
} }
} }
@@ -5,9 +5,6 @@ import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Dangerous
import androidx.compose.material.icons.filled.Warning
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
@@ -31,6 +28,9 @@ import eu.kanade.presentation.util.rememberResourceBitmapPainter
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.extension.model.Extension import eu.kanade.tachiyomi.extension.model.Extension
import eu.kanade.tachiyomi.extension.util.ExtensionLoader import eu.kanade.tachiyomi.extension.util.ExtensionLoader
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Dangerous
import mihon.icons.materialsymbols.rounded.Warning
import tachiyomi.core.common.util.lang.withIOContext import tachiyomi.core.common.util.lang.withIOContext
import tachiyomi.domain.source.model.Source import tachiyomi.domain.source.model.Source
import tachiyomi.source.local.isLocal import tachiyomi.source.local.isLocal
@@ -49,7 +49,7 @@ fun SourceIcon(
when { when {
source.isStub && icon == null -> { source.isStub && icon == null -> {
Image( Image(
imageVector = Icons.Filled.Warning, imageVector = MaterialSymbols.Rounded.Warning,
contentDescription = null, contentDescription = null,
colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.error), colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.error),
modifier = modifier.then(defaultModifier), modifier = modifier.then(defaultModifier),
@@ -113,7 +113,7 @@ fun ExtensionIcon(
} }
} }
is Extension.Untrusted -> Image( is Extension.Untrusted -> Image(
imageVector = Icons.Filled.Dangerous, imageVector = MaterialSymbols.Rounded.Dangerous,
contentDescription = null, contentDescription = null,
colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.error), colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.error),
modifier = modifier.then(defaultModifier), modifier = modifier.then(defaultModifier),
@@ -1,8 +1,5 @@
package eu.kanade.presentation.browse.components package eu.kanade.presentation.browse.components
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ViewList
import androidx.compose.material.icons.filled.ViewModule
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@@ -18,6 +15,9 @@ import eu.kanade.presentation.components.RadioMenuItem
import eu.kanade.presentation.components.SearchToolbar import eu.kanade.presentation.components.SearchToolbar
import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.Source
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ViewList
import mihon.icons.materialsymbols.rounded.ViewModule
import tachiyomi.domain.library.model.LibraryDisplayMode import tachiyomi.domain.library.model.LibraryDisplayMode
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -58,9 +58,9 @@ fun BrowseSourceToolbar(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_display_mode), title = stringResource(MR.strings.action_display_mode),
icon = if (displayMode == LibraryDisplayMode.List) { icon = if (displayMode == LibraryDisplayMode.List) {
Icons.AutoMirrored.Filled.ViewList MaterialSymbols.AutoMirroredRounded.ViewList
} else { } else {
Icons.Filled.ViewModule MaterialSymbols.Rounded.ViewModule
}, },
onClick = { selectingDisplayMode = true }, onClick = { selectingDisplayMode = true },
), ),
@@ -10,9 +10,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.ArrowForward
import androidx.compose.material.icons.outlined.Error
import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
@@ -23,6 +20,9 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ArrowForward
import mihon.icons.materialsymbols.rounded.Error
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.components.material.padding
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -55,7 +55,7 @@ fun GlobalSearchResultItem(
Text(text = subtitle) Text(text = subtitle)
} }
IconButton(onClick = onClick) { IconButton(onClick = onClick) {
Icon(imageVector = Icons.AutoMirrored.Outlined.ArrowForward, contentDescription = null) Icon(imageVector = MaterialSymbols.AutoMirroredRounded.ArrowForward, contentDescription = null)
} }
} }
content() content()
@@ -90,7 +90,7 @@ fun GlobalSearchErrorResultItem(message: String?) {
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center, verticalArrangement = Arrangement.Center,
) { ) {
Icon(imageVector = Icons.Outlined.Error, contentDescription = null) Icon(imageVector = MaterialSymbols.Rounded.Error, contentDescription = null)
Spacer(Modifier.height(4.dp)) Spacer(Modifier.height(4.dp))
Text( Text(
text = message ?: stringResource(MR.strings.unknown_error), text = message ?: stringResource(MR.strings.unknown_error),
@@ -11,10 +11,6 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.DoneAll
import androidx.compose.material.icons.outlined.FilterList
import androidx.compose.material.icons.outlined.PushPin
import androidx.compose.material3.FilterChip import androidx.compose.material3.FilterChip
import androidx.compose.material3.FilterChipDefaults import androidx.compose.material3.FilterChipDefaults
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
@@ -29,6 +25,10 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import eu.kanade.presentation.components.SearchToolbar import eu.kanade.presentation.components.SearchToolbar
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.SourceFilter import eu.kanade.tachiyomi.ui.browse.source.globalsearch.SourceFilter
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.DoneAll
import mihon.icons.materialsymbols.rounded.FilterList
import mihon.icons.materialsymbols.rounded.PushPin
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.components.material.padding
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -82,7 +82,7 @@ fun GlobalSearchToolbar(
onClick = { onChangeSearchFilter(SourceFilter.PinnedOnly) }, onClick = { onChangeSearchFilter(SourceFilter.PinnedOnly) },
leadingIcon = { leadingIcon = {
Icon( Icon(
imageVector = Icons.Outlined.PushPin, imageVector = MaterialSymbols.Rounded.PushPin,
contentDescription = null, contentDescription = null,
modifier = Modifier modifier = Modifier
.size(FilterChipDefaults.IconSize), .size(FilterChipDefaults.IconSize),
@@ -97,7 +97,7 @@ fun GlobalSearchToolbar(
onClick = { onChangeSearchFilter(SourceFilter.All) }, onClick = { onChangeSearchFilter(SourceFilter.All) },
leadingIcon = { leadingIcon = {
Icon( Icon(
imageVector = Icons.Outlined.DoneAll, imageVector = MaterialSymbols.Rounded.DoneAll,
contentDescription = null, contentDescription = null,
modifier = Modifier modifier = Modifier
.size(FilterChipDefaults.IconSize), .size(FilterChipDefaults.IconSize),
@@ -116,7 +116,7 @@ fun GlobalSearchToolbar(
onClick = { onToggleResults() }, onClick = { onToggleResults() },
leadingIcon = { leadingIcon = {
Icon( Icon(
imageVector = Icons.Outlined.FilterList, imageVector = MaterialSymbols.Rounded.FilterList,
contentDescription = null, contentDescription = null,
modifier = Modifier modifier = Modifier
.size(FilterChipDefaults.IconSize), .size(FilterChipDefaults.IconSize),
@@ -1,13 +1,13 @@
package eu.kanade.presentation.category.components package eu.kanade.presentation.category.components
import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Add
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.SmallExtendedFloatingActionButton import androidx.compose.material3.SmallExtendedFloatingActionButton
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Add
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
import tachiyomi.presentation.core.util.shouldExpandFAB import tachiyomi.presentation.core.util.shouldExpandFAB
@@ -20,7 +20,7 @@ fun CategoryFloatingActionButton(
) { ) {
SmallExtendedFloatingActionButton( SmallExtendedFloatingActionButton(
text = { Text(text = stringResource(MR.strings.action_add)) }, text = { Text(text = stringResource(MR.strings.action_add)) },
icon = { Icon(imageVector = Icons.Outlined.Add, contentDescription = null) }, icon = { Icon(imageVector = MaterialSymbols.Rounded.Add, contentDescription = null) },
onClick = onCreate, onClick = onCreate,
expanded = lazyListState.shouldExpandFAB(), expanded = lazyListState.shouldExpandFAB(),
modifier = modifier, modifier = modifier,
@@ -4,10 +4,6 @@ import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material.icons.outlined.DragHandle
import androidx.compose.material.icons.outlined.Edit
import androidx.compose.material3.ElevatedCard import androidx.compose.material3.ElevatedCard
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
@@ -16,6 +12,10 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Delete
import mihon.icons.materialsymbols.rounded.DragHandle
import mihon.icons.materialsymbols.rounded.Edit
import sh.calvin.reorderable.ReorderableCollectionItemScope import sh.calvin.reorderable.ReorderableCollectionItemScope
import tachiyomi.domain.category.model.Category import tachiyomi.domain.category.model.Category
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
@@ -42,7 +42,7 @@ fun ReorderableCollectionItemScope.CategoryListItem(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Icon( Icon(
imageVector = Icons.Outlined.DragHandle, imageVector = MaterialSymbols.Rounded.DragHandle,
contentDescription = null, contentDescription = null,
modifier = Modifier modifier = Modifier
.padding(MaterialTheme.padding.medium) .padding(MaterialTheme.padding.medium)
@@ -54,13 +54,13 @@ fun ReorderableCollectionItemScope.CategoryListItem(
) )
IconButton(onClick = onRename) { IconButton(onClick = onRename) {
Icon( Icon(
imageVector = Icons.Outlined.Edit, imageVector = MaterialSymbols.Rounded.Edit,
contentDescription = stringResource(MR.strings.action_rename_category), contentDescription = stringResource(MR.strings.action_rename_category),
) )
} }
IconButton(onClick = onDelete) { IconButton(onClick = onDelete) {
Icon( Icon(
imageVector = Icons.Outlined.Delete, imageVector = MaterialSymbols.Rounded.Delete,
contentDescription = stringResource(MR.strings.action_delete), contentDescription = stringResource(MR.strings.action_delete),
) )
} }
@@ -8,11 +8,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.text.BasicTextField import androidx.compose.foundation.text.BasicTextField
import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.ArrowBack
import androidx.compose.material.icons.outlined.Close
import androidx.compose.material.icons.outlined.MoreVert
import androidx.compose.material.icons.outlined.Search
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
@@ -51,6 +46,11 @@ import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ArrowBack
import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.MoreVert
import mihon.icons.materialsymbols.rounded.Search
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
import tachiyomi.presentation.core.util.clearFocusOnSoftKeyboardHide import tachiyomi.presentation.core.util.clearFocusOnSoftKeyboardHide
@@ -133,7 +133,7 @@ fun AppBar(
if (isActionMode) { if (isActionMode) {
IconButton(onClick = onCancelActionMode) { IconButton(onClick = onCancelActionMode) {
Icon( Icon(
imageVector = Icons.Outlined.Close, imageVector = MaterialSymbols.Rounded.Close,
contentDescription = stringResource(MR.strings.action_cancel), contentDescription = stringResource(MR.strings.action_cancel),
) )
} }
@@ -231,7 +231,7 @@ fun AppBarActions(
onClick = { showMenu = !showMenu }, onClick = { showMenu = !showMenu },
) { ) {
Icon( Icon(
Icons.Outlined.MoreVert, MaterialSymbols.Rounded.MoreVert,
contentDescription = stringResource(MR.strings.action_menu_overflow_description), contentDescription = stringResource(MR.strings.action_menu_overflow_description),
) )
} }
@@ -360,7 +360,7 @@ fun SearchToolbar(
onClick = onClick, onClick = onClick,
) { ) {
Icon( Icon(
Icons.Outlined.Search, MaterialSymbols.Rounded.Search,
contentDescription = stringResource(MR.strings.action_search), contentDescription = stringResource(MR.strings.action_search),
) )
} }
@@ -383,7 +383,7 @@ fun SearchToolbar(
}, },
) { ) {
Icon( Icon(
Icons.Outlined.Close, MaterialSymbols.Rounded.Close,
contentDescription = stringResource(MR.strings.action_reset), contentDescription = stringResource(MR.strings.action_reset),
) )
} }
@@ -404,7 +404,7 @@ fun UpIcon(
navigationIcon: ImageVector? = null, navigationIcon: ImageVector? = null,
) { ) {
val icon = navigationIcon val icon = navigationIcon
?: Icons.AutoMirrored.Outlined.ArrowBack ?: MaterialSymbols.AutoMirroredRounded.ArrowBack
Icon( Icon(
imageVector = icon, imageVector = icon,
contentDescription = stringResource(MR.strings.action_bar_up_description), contentDescription = stringResource(MR.strings.action_bar_up_description),
@@ -5,10 +5,6 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.sizeIn import androidx.compose.foundation.layout.sizeIn
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.ArrowRight
import androidx.compose.material.icons.outlined.RadioButtonChecked
import androidx.compose.material.icons.outlined.RadioButtonUnchecked
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -21,6 +17,10 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.PopupProperties import androidx.compose.ui.window.PopupProperties
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ArrowRight
import mihon.icons.materialsymbols.rounded.RadioButtonChecked
import mihon.icons.materialsymbols.rounded.RadioButtonUnchecked
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
import androidx.compose.material3.DropdownMenu as ComposeDropdownMenu import androidx.compose.material3.DropdownMenu as ComposeDropdownMenu
@@ -63,13 +63,13 @@ fun RadioMenuItem(
trailingIcon = { trailingIcon = {
if (isChecked) { if (isChecked) {
Icon( Icon(
imageVector = Icons.Outlined.RadioButtonChecked, imageVector = MaterialSymbols.Rounded.RadioButtonChecked,
contentDescription = stringResource(MR.strings.selected), contentDescription = stringResource(MR.strings.selected),
tint = MaterialTheme.colorScheme.primary, tint = MaterialTheme.colorScheme.primary,
) )
} else { } else {
Icon( Icon(
imageVector = Icons.Outlined.RadioButtonUnchecked, imageVector = MaterialSymbols.Rounded.RadioButtonUnchecked,
contentDescription = stringResource(MR.strings.not_selected), contentDescription = stringResource(MR.strings.not_selected),
) )
} }
@@ -93,7 +93,7 @@ fun NestedMenuItem(
onClick = { nestedExpanded = true }, onClick = { nestedExpanded = true },
trailingIcon = { trailingIcon = {
Icon( Icon(
imageVector = Icons.AutoMirrored.Outlined.ArrowRight, imageVector = MaterialSymbols.AutoMirroredRounded.ArrowRight,
contentDescription = null, contentDescription = null,
) )
}, },
@@ -1,12 +1,12 @@
package eu.kanade.presentation.components package eu.kanade.presentation.components
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.HelpOutline
import androidx.compose.material.icons.outlined.Refresh
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.PreviewLightDark import androidx.compose.ui.tooling.preview.PreviewLightDark
import eu.kanade.presentation.theme.TachiyomiPreviewTheme import eu.kanade.presentation.theme.TachiyomiPreviewTheme
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.Help
import mihon.icons.materialsymbols.rounded.Refresh
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.screens.EmptyScreen import tachiyomi.presentation.core.screens.EmptyScreen
import tachiyomi.presentation.core.screens.EmptyScreenAction import tachiyomi.presentation.core.screens.EmptyScreenAction
@@ -33,12 +33,12 @@ private fun WithActionPreview() {
actions = listOf( actions = listOf(
EmptyScreenAction( EmptyScreenAction(
stringRes = MR.strings.action_retry, stringRes = MR.strings.action_retry,
icon = Icons.Outlined.Refresh, icon = MaterialSymbols.Rounded.Refresh,
onClick = {}, onClick = {},
), ),
EmptyScreenAction( EmptyScreenAction(
stringRes = MR.strings.getting_started_guide, stringRes = MR.strings.getting_started_guide,
icon = Icons.AutoMirrored.Outlined.HelpOutline, icon = MaterialSymbols.AutoMirroredRounded.Help,
onClick = {}, onClick = {},
), ),
), ),
@@ -9,8 +9,6 @@ import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.PagerState import androidx.compose.foundation.pager.PagerState
import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.MoreVert
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
@@ -28,6 +26,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachIndexed
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.MoreVert
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.TabText import tachiyomi.presentation.core.components.material.TabText
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -90,7 +90,7 @@ private fun MoreMenu(
Box(modifier = Modifier.wrapContentSize(Alignment.TopStart)) { Box(modifier = Modifier.wrapContentSize(Alignment.TopStart)) {
IconButton(onClick = { expanded = true }) { IconButton(onClick = { expanded = true }) {
Icon( Icon(
imageVector = Icons.Default.MoreVert, imageVector = MaterialSymbols.Rounded.MoreVert,
contentDescription = stringResource(MR.strings.label_more), contentDescription = stringResource(MR.strings.label_more),
) )
} }
@@ -4,8 +4,6 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.BugReport
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@@ -18,6 +16,8 @@ import androidx.compose.ui.tooling.preview.PreviewLightDark
import eu.kanade.presentation.theme.TachiyomiPreviewTheme import eu.kanade.presentation.theme.TachiyomiPreviewTheme
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import mihon.app.di.appGraph import mihon.app.di.appGraph
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.BugReport
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.components.material.padding
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -33,7 +33,7 @@ fun CrashScreen(
val crashLogUtil = remember { context.appGraph.crashLogUtil } val crashLogUtil = remember { context.appGraph.crashLogUtil }
InfoScreen( InfoScreen(
icon = Icons.Outlined.BugReport, icon = MaterialSymbols.Rounded.BugReport,
headingText = stringResource(MR.strings.crash_screen_title), headingText = stringResource(MR.strings.crash_screen_title),
subtitleText = stringResource(MR.strings.crash_screen_description, stringResource(MR.strings.app_name)), subtitleText = stringResource(MR.strings.crash_screen_description, stringResource(MR.strings.app_name)),
acceptText = stringResource(MR.strings.pref_dump_crash_logs), acceptText = stringResource(MR.strings.pref_dump_crash_logs),
@@ -3,8 +3,6 @@ package eu.kanade.presentation.history
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.DeleteSweep
import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SnackbarHostState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@@ -20,6 +18,8 @@ import eu.kanade.presentation.history.components.HistoryItem
import eu.kanade.presentation.theme.TachiyomiPreviewTheme import eu.kanade.presentation.theme.TachiyomiPreviewTheme
import eu.kanade.tachiyomi.ui.history.HistoryViewModel import eu.kanade.tachiyomi.ui.history.HistoryViewModel
import kotlinx.datetime.LocalDate import kotlinx.datetime.LocalDate
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.DeleteSweep
import tachiyomi.domain.history.model.HistoryWithRelations import tachiyomi.domain.history.model.HistoryWithRelations
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.FastScrollLazyColumn import tachiyomi.presentation.core.components.FastScrollLazyColumn
@@ -50,7 +50,7 @@ fun HistoryScreen(
listOf( listOf(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.pref_clear_history), title = stringResource(MR.strings.pref_clear_history),
icon = Icons.Outlined.DeleteSweep, icon = MaterialSymbols.Rounded.DeleteSweep,
onClick = { onClick = {
onDialogChange(HistoryViewModel.Dialog.DeleteAll) onDialogChange(HistoryViewModel.Dialog.DeleteAll)
}, },
@@ -6,9 +6,6 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material.icons.outlined.FavoriteBorder
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -27,6 +24,9 @@ import eu.kanade.presentation.manga.components.MangaCover
import eu.kanade.presentation.theme.TachiyomiPreviewTheme import eu.kanade.presentation.theme.TachiyomiPreviewTheme
import eu.kanade.presentation.util.formatChapterNumber import eu.kanade.presentation.util.formatChapterNumber
import eu.kanade.tachiyomi.util.lang.toTimestampString import eu.kanade.tachiyomi.util.lang.toTimestampString
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Delete
import mihon.icons.materialsymbols.rounded.Favorite
import tachiyomi.domain.history.model.HistoryWithRelations import tachiyomi.domain.history.model.HistoryWithRelations
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.components.material.padding
@@ -87,7 +87,7 @@ fun HistoryItem(
if (!history.coverData.isMangaFavorite) { if (!history.coverData.isMangaFavorite) {
IconButton(onClick = onClickFavorite) { IconButton(onClick = onClickFavorite) {
Icon( Icon(
imageVector = Icons.Outlined.FavoriteBorder, imageVector = MaterialSymbols.Rounded.Favorite,
contentDescription = stringResource(MR.strings.add_to_library), contentDescription = stringResource(MR.strings.add_to_library),
tint = MaterialTheme.colorScheme.onSurface, tint = MaterialTheme.colorScheme.onSurface,
) )
@@ -96,7 +96,7 @@ fun HistoryItem(
IconButton(onClick = onClickDelete) { IconButton(onClick = onClickDelete) {
Icon( Icon(
imageVector = Icons.Outlined.Delete, imageVector = MaterialSymbols.Rounded.Delete,
contentDescription = stringResource(MR.strings.action_delete), contentDescription = stringResource(MR.strings.action_delete),
tint = MaterialTheme.colorScheme.onSurface, tint = MaterialTheme.colorScheme.onSurface,
) )
@@ -6,8 +6,6 @@ import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Refresh
import androidx.compose.material3.FilterChip import androidx.compose.material3.FilterChip
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
@@ -21,6 +19,8 @@ import eu.kanade.presentation.components.TabbedDialog
import eu.kanade.presentation.components.TabbedDialogPaddings import eu.kanade.presentation.components.TabbedDialogPaddings
import eu.kanade.tachiyomi.ui.library.LibrarySettingsViewModel import eu.kanade.tachiyomi.ui.library.LibrarySettingsViewModel
import eu.kanade.tachiyomi.util.system.isReleaseBuildType import eu.kanade.tachiyomi.util.system.isReleaseBuildType
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Refresh
import tachiyomi.core.common.preference.TriState import tachiyomi.core.common.preference.TriState
import tachiyomi.domain.category.model.Category import tachiyomi.domain.category.model.Category
import tachiyomi.domain.library.model.LibraryDisplayMode import tachiyomi.domain.library.model.LibraryDisplayMode
@@ -186,7 +186,7 @@ private fun ColumnScope.SortPage(
if (mode == LibrarySort.Type.Random) { if (mode == LibrarySort.Type.Random) {
BaseSortItem( BaseSortItem(
label = stringResource(titleRes), label = stringResource(titleRes),
icon = Icons.Default.Refresh icon = MaterialSymbols.Rounded.Refresh
.takeIf { sortingMode == LibrarySort.Type.Random }, .takeIf { sortingMode == LibrarySort.Type.Random },
onClick = { onClick = {
viewModel.setSort(category, mode, LibrarySort.Direction.Ascending) viewModel.setSort(category, mode, LibrarySort.Direction.Ascending)
@@ -14,8 +14,6 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.PlayArrow
import androidx.compose.material3.FilledIconButton import androidx.compose.material3.FilledIconButton
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButtonDefaults import androidx.compose.material3.IconButtonDefaults
@@ -39,6 +37,8 @@ import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import eu.kanade.presentation.manga.components.MangaCover import eu.kanade.presentation.manga.components.MangaCover
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.PlayArrow
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.BadgeGroup import tachiyomi.presentation.core.components.BadgeGroup
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -395,7 +395,7 @@ private fun ContinueReadingButton(
modifier = Modifier.size(size), modifier = Modifier.size(size),
) { ) {
Icon( Icon(
imageVector = Icons.Filled.PlayArrow, imageVector = MaterialSymbols.Rounded.PlayArrow,
contentDescription = stringResource(MR.strings.action_resume), contentDescription = stringResource(MR.strings.action_resume),
modifier = Modifier.size(iconSize), modifier = Modifier.size(iconSize),
) )
@@ -1,12 +1,12 @@
package eu.kanade.presentation.library.components package eu.kanade.presentation.library.components
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Folder
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.PreviewLightDark import androidx.compose.ui.tooling.preview.PreviewLightDark
import eu.kanade.presentation.theme.TachiyomiPreviewTheme import eu.kanade.presentation.theme.TachiyomiPreviewTheme
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Folder
import tachiyomi.presentation.core.components.Badge import tachiyomi.presentation.core.components.Badge
@Composable @Composable
@@ -34,7 +34,7 @@ internal fun LanguageBadge(
) { ) {
if (isLocal) { if (isLocal) {
Badge( Badge(
imageVector = Icons.Outlined.Folder, imageVector = MaterialSymbols.Rounded.Folder,
color = MaterialTheme.colorScheme.tertiary, color = MaterialTheme.colorScheme.tertiary,
iconColor = MaterialTheme.colorScheme.onTertiary, iconColor = MaterialTheme.colorScheme.onTertiary,
) )
@@ -2,10 +2,6 @@ package eu.kanade.presentation.library.components
import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.FilterList
import androidx.compose.material.icons.outlined.FlipToBack
import androidx.compose.material.icons.outlined.SelectAll
import androidx.compose.material3.LocalContentColor import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
@@ -19,6 +15,10 @@ import androidx.compose.ui.unit.sp
import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.AppBar
import eu.kanade.presentation.components.AppBarActions import eu.kanade.presentation.components.AppBarActions
import eu.kanade.presentation.components.SearchToolbar import eu.kanade.presentation.components.SearchToolbar
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.FilterList
import mihon.icons.materialsymbols.rounded.FlipToBack
import mihon.icons.materialsymbols.rounded.SelectAll
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.Pill import tachiyomi.presentation.core.components.Pill
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -98,7 +98,7 @@ private fun LibraryRegularToolbar(
listOf( listOf(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_filter), title = stringResource(MR.strings.action_filter),
icon = Icons.Outlined.FilterList, icon = MaterialSymbols.Rounded.FilterList,
iconTint = filterTint, iconTint = filterTint,
onClick = onClickFilter, onClick = onClickFilter,
), ),
@@ -135,12 +135,12 @@ private fun LibrarySelectionToolbar(
listOf( listOf(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_select_all), title = stringResource(MR.strings.action_select_all),
icon = Icons.Outlined.SelectAll, icon = MaterialSymbols.Rounded.SelectAll,
onClick = onClickSelectAll, onClick = onClickSelectAll,
), ),
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_select_inverse), title = stringResource(MR.strings.action_select_inverse),
icon = Icons.Outlined.FlipToBack, icon = MaterialSymbols.Rounded.FlipToBack,
onClick = onClickInvertSelection, onClick = onClickInvertSelection,
), ),
), ),
@@ -9,8 +9,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.PeopleAlt
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@@ -32,6 +30,8 @@ import eu.kanade.domain.manga.model.downloadedFilter
import eu.kanade.presentation.components.TabbedDialog import eu.kanade.presentation.components.TabbedDialog
import eu.kanade.presentation.components.TabbedDialogPaddings import eu.kanade.presentation.components.TabbedDialogPaddings
import mihon.app.di.appGraph import mihon.app.di.appGraph
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.PeopleAlt
import tachiyomi.core.common.preference.TriState import tachiyomi.core.common.preference.TriState
import tachiyomi.domain.manga.model.Manga import tachiyomi.domain.manga.model.Manga
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
@@ -174,7 +174,7 @@ fun ScanlatorFilterItem(
horizontalArrangement = Arrangement.spacedBy(24.dp), horizontalArrangement = Arrangement.spacedBy(24.dp),
) { ) {
Icon( Icon(
imageVector = Icons.Outlined.PeopleAlt, imageVector = MaterialSymbols.Rounded.PeopleAlt,
contentDescription = null, contentDescription = null,
tint = if (active) { tint = if (active) {
MaterialTheme.colorScheme.active MaterialTheme.colorScheme.active
@@ -19,18 +19,6 @@ import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Brush
import androidx.compose.material.icons.filled.PersonOutline
import androidx.compose.material.icons.filled.Warning
import androidx.compose.material.icons.outlined.Add
import androidx.compose.material.icons.outlined.AttachMoney
import androidx.compose.material.icons.outlined.Block
import androidx.compose.material.icons.outlined.Close
import androidx.compose.material.icons.outlined.Done
import androidx.compose.material.icons.outlined.DoneAll
import androidx.compose.material.icons.outlined.Pause
import androidx.compose.material.icons.outlined.Schedule
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -66,6 +54,18 @@ import eu.kanade.presentation.more.settings.widget.TextPreferenceWidget
import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.SManga
import mihon.app.di.appGraph import mihon.app.di.appGraph
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Add
import mihon.icons.materialsymbols.rounded.AttachMoney
import mihon.icons.materialsymbols.rounded.Block
import mihon.icons.materialsymbols.rounded.Brush
import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.Done
import mihon.icons.materialsymbols.rounded.DoneAll
import mihon.icons.materialsymbols.rounded.Pause
import mihon.icons.materialsymbols.rounded.Person
import mihon.icons.materialsymbols.rounded.Schedule
import mihon.icons.materialsymbols.rounded.Warning
import tachiyomi.domain.manga.model.Manga import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.manga.model.MangaWithChapterCount import tachiyomi.domain.manga.model.MangaWithChapterCount
import tachiyomi.domain.source.model.StubSource import tachiyomi.domain.source.model.StubSource
@@ -141,7 +141,7 @@ fun DuplicateMangaDialog(
TextPreferenceWidget( TextPreferenceWidget(
title = stringResource(MR.strings.action_add_anyway), title = stringResource(MR.strings.action_add_anyway),
icon = Icons.Outlined.Add, icon = MaterialSymbols.Rounded.Add,
onPreferenceClick = { onPreferenceClick = {
onDismissRequest() onDismissRequest()
onConfirm() onConfirm()
@@ -230,7 +230,7 @@ private fun DuplicateMangaListItem(
if (!manga.author.isNullOrBlank()) { if (!manga.author.isNullOrBlank()) {
MangaDetailRow( MangaDetailRow(
text = manga.author!!, text = manga.author!!,
iconImageVector = Icons.Filled.PersonOutline, iconImageVector = MaterialSymbols.Rounded.Person,
maxLines = 2, maxLines = 2,
) )
} }
@@ -238,7 +238,7 @@ private fun DuplicateMangaListItem(
if (!manga.artist.isNullOrBlank() && manga.author != manga.artist) { if (!manga.artist.isNullOrBlank() && manga.author != manga.artist) {
MangaDetailRow( MangaDetailRow(
text = manga.artist!!, text = manga.artist!!,
iconImageVector = Icons.Filled.Brush, iconImageVector = MaterialSymbols.Rounded.Brush,
maxLines = 2, maxLines = 2,
) )
} }
@@ -254,13 +254,13 @@ private fun DuplicateMangaListItem(
else -> stringResource(MR.strings.unknown) else -> stringResource(MR.strings.unknown)
}, },
iconImageVector = when (manga.status) { iconImageVector = when (manga.status) {
SManga.ONGOING.toLong() -> Icons.Outlined.Schedule SManga.ONGOING.toLong() -> MaterialSymbols.Rounded.Schedule
SManga.COMPLETED.toLong() -> Icons.Outlined.DoneAll SManga.COMPLETED.toLong() -> MaterialSymbols.Rounded.DoneAll
SManga.LICENSED.toLong() -> Icons.Outlined.AttachMoney SManga.LICENSED.toLong() -> MaterialSymbols.Rounded.AttachMoney
SManga.PUBLISHING_FINISHED.toLong() -> Icons.Outlined.Done SManga.PUBLISHING_FINISHED.toLong() -> MaterialSymbols.Rounded.Done
SManga.CANCELLED.toLong() -> Icons.Outlined.Close SManga.CANCELLED.toLong() -> MaterialSymbols.Rounded.Close
SManga.ON_HIATUS.toLong() -> Icons.Outlined.Pause SManga.ON_HIATUS.toLong() -> MaterialSymbols.Rounded.Pause
else -> Icons.Outlined.Block else -> MaterialSymbols.Rounded.Block
}, },
) )
@@ -272,7 +272,7 @@ private fun DuplicateMangaListItem(
) { ) {
if (source is StubSource) { if (source is StubSource) {
Icon( Icon(
imageVector = Icons.Filled.Warning, imageVector = MaterialSymbols.Rounded.Warning,
contentDescription = null, contentDescription = null,
modifier = Modifier.size(16.dp), modifier = Modifier.size(16.dp),
tint = MaterialTheme.colorScheme.error, tint = MaterialTheme.colorScheme.error,
@@ -21,8 +21,6 @@ import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.PlayArrow
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.SmallExtendedFloatingActionButton import androidx.compose.material3.SmallExtendedFloatingActionButton
import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHost
@@ -62,6 +60,8 @@ import eu.kanade.tachiyomi.source.getNameForMangaInfo
import eu.kanade.tachiyomi.ui.manga.ChapterList import eu.kanade.tachiyomi.ui.manga.ChapterList
import eu.kanade.tachiyomi.ui.manga.MangaViewModel import eu.kanade.tachiyomi.ui.manga.MangaViewModel
import eu.kanade.tachiyomi.util.system.copyToClipboard import eu.kanade.tachiyomi.util.system.copyToClipboard
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.roundedfilled.PlayArrow
import tachiyomi.domain.chapter.model.Chapter import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.chapter.service.missingChaptersCount import tachiyomi.domain.chapter.service.missingChaptersCount
import tachiyomi.domain.library.service.LibraryPreferences import tachiyomi.domain.library.service.LibraryPreferences
@@ -337,7 +337,7 @@ private fun MangaScreenSmallImpl(
text = stringResource(if (isReading) MR.strings.action_resume else MR.strings.action_start), text = stringResource(if (isReading) MR.strings.action_resume else MR.strings.action_start),
) )
}, },
icon = { Icon(imageVector = Icons.Filled.PlayArrow, contentDescription = null) }, icon = { Icon(imageVector = MaterialSymbols.RoundedFilled.PlayArrow, contentDescription = null) },
onClick = onContinueReading, onClick = onContinueReading,
expanded = chapterListState.shouldExpandFAB(), expanded = chapterListState.shouldExpandFAB(),
modifier = Modifier.animateFloatingActionButton( modifier = Modifier.animateFloatingActionButton(
@@ -579,7 +579,7 @@ fun MangaScreenLargeImpl(
), ),
) )
}, },
icon = { Icon(imageVector = Icons.Filled.PlayArrow, contentDescription = null) }, icon = { Icon(imageVector = MaterialSymbols.RoundedFilled.PlayArrow, contentDescription = null) },
onClick = onContinueReading, onClick = onContinueReading,
expanded = chapterListState.shouldExpandFAB(), expanded = chapterListState.shouldExpandFAB(),
modifier = Modifier.animateFloatingActionButton( modifier = Modifier.animateFloatingActionButton(
@@ -5,10 +5,6 @@ import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.CheckCircle
import androidx.compose.material.icons.outlined.ArrowDownward
import androidx.compose.material.icons.outlined.ErrorOutline
import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@@ -34,6 +30,10 @@ import androidx.compose.ui.unit.dp
import eu.kanade.presentation.components.DropdownMenu import eu.kanade.presentation.components.DropdownMenu
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.download.model.Download import eu.kanade.tachiyomi.data.download.model.Download
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.ArrowDownward
import mihon.icons.materialsymbols.rounded.Error
import mihon.icons.materialsymbols.roundedfilled.CheckCircle
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.IconButtonTokens import tachiyomi.presentation.core.components.material.IconButtonTokens
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -179,7 +179,7 @@ private fun DownloadingIndicator(
) )
} }
Icon( Icon(
imageVector = Icons.Outlined.ArrowDownward, imageVector = MaterialSymbols.Rounded.ArrowDownward,
contentDescription = null, contentDescription = null,
modifier = ArrowModifier, modifier = ArrowModifier,
tint = arrowColor, tint = arrowColor,
@@ -206,7 +206,7 @@ private fun DownloadedIndicator(
contentAlignment = Alignment.Center, contentAlignment = Alignment.Center,
) { ) {
Icon( Icon(
imageVector = Icons.Filled.CheckCircle, imageVector = MaterialSymbols.RoundedFilled.CheckCircle,
contentDescription = null, contentDescription = null,
modifier = Modifier.size(IndicatorSize), modifier = Modifier.size(IndicatorSize),
tint = MaterialTheme.colorScheme.onSurfaceVariant, tint = MaterialTheme.colorScheme.onSurfaceVariant,
@@ -241,7 +241,7 @@ private fun ErrorIndicator(
contentAlignment = Alignment.Center, contentAlignment = Alignment.Center,
) { ) {
Icon( Icon(
imageVector = Icons.Outlined.ErrorOutline, imageVector = MaterialSymbols.Rounded.Error,
contentDescription = stringResource(MR.strings.chapter_error), contentDescription = stringResource(MR.strings.chapter_error),
modifier = Modifier.size(IndicatorSize), modifier = Modifier.size(IndicatorSize),
tint = MaterialTheme.colorScheme.error, tint = MaterialTheme.colorScheme.error,
@@ -22,16 +22,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.foundation.shape.ZeroCornerSize import androidx.compose.foundation.shape.ZeroCornerSize
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.Label
import androidx.compose.material.icons.outlined.BookmarkAdd
import androidx.compose.material.icons.outlined.BookmarkRemove
import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material.icons.outlined.DoneAll
import androidx.compose.material.icons.outlined.Download
import androidx.compose.material.icons.outlined.MoreVert
import androidx.compose.material.icons.outlined.RemoveDone
import androidx.compose.material.icons.outlined.SwapCalls
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -62,6 +52,16 @@ import kotlinx.coroutines.Job
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.isActive import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.Label
import mihon.icons.materialsymbols.rounded.BookmarkAdd
import mihon.icons.materialsymbols.rounded.BookmarkRemove
import mihon.icons.materialsymbols.rounded.Delete
import mihon.icons.materialsymbols.rounded.DoneAll
import mihon.icons.materialsymbols.rounded.Download
import mihon.icons.materialsymbols.rounded.MoreVert
import mihon.icons.materialsymbols.rounded.RemoveDone
import mihon.icons.materialsymbols.rounded.SwapCalls
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
import kotlin.time.Duration.Companion.seconds import kotlin.time.Duration.Companion.seconds
@@ -113,7 +113,7 @@ fun MangaBottomActionMenu(
if (onBookmarkClicked != null) { if (onBookmarkClicked != null) {
Button( Button(
title = stringResource(MR.strings.action_bookmark), title = stringResource(MR.strings.action_bookmark),
icon = Icons.Outlined.BookmarkAdd, icon = MaterialSymbols.Rounded.BookmarkAdd,
toConfirm = confirm[0], toConfirm = confirm[0],
onLongClick = { onLongClickItem(0) }, onLongClick = { onLongClickItem(0) },
onClick = onBookmarkClicked, onClick = onBookmarkClicked,
@@ -122,7 +122,7 @@ fun MangaBottomActionMenu(
if (onRemoveBookmarkClicked != null) { if (onRemoveBookmarkClicked != null) {
Button( Button(
title = stringResource(MR.strings.action_remove_bookmark), title = stringResource(MR.strings.action_remove_bookmark),
icon = Icons.Outlined.BookmarkRemove, icon = MaterialSymbols.Rounded.BookmarkRemove,
toConfirm = confirm[1], toConfirm = confirm[1],
onLongClick = { onLongClickItem(1) }, onLongClick = { onLongClickItem(1) },
onClick = onRemoveBookmarkClicked, onClick = onRemoveBookmarkClicked,
@@ -131,7 +131,7 @@ fun MangaBottomActionMenu(
if (onMarkAsReadClicked != null) { if (onMarkAsReadClicked != null) {
Button( Button(
title = stringResource(MR.strings.action_mark_as_read), title = stringResource(MR.strings.action_mark_as_read),
icon = Icons.Outlined.DoneAll, icon = MaterialSymbols.Rounded.DoneAll,
toConfirm = confirm[2], toConfirm = confirm[2],
onLongClick = { onLongClickItem(2) }, onLongClick = { onLongClickItem(2) },
onClick = onMarkAsReadClicked, onClick = onMarkAsReadClicked,
@@ -140,7 +140,7 @@ fun MangaBottomActionMenu(
if (onMarkAsUnreadClicked != null) { if (onMarkAsUnreadClicked != null) {
Button( Button(
title = stringResource(MR.strings.action_mark_as_unread), title = stringResource(MR.strings.action_mark_as_unread),
icon = Icons.Outlined.RemoveDone, icon = MaterialSymbols.Rounded.RemoveDone,
toConfirm = confirm[3], toConfirm = confirm[3],
onLongClick = { onLongClickItem(3) }, onLongClick = { onLongClickItem(3) },
onClick = onMarkAsUnreadClicked, onClick = onMarkAsUnreadClicked,
@@ -158,7 +158,7 @@ fun MangaBottomActionMenu(
if (onDownloadClicked != null) { if (onDownloadClicked != null) {
Button( Button(
title = stringResource(MR.strings.action_download), title = stringResource(MR.strings.action_download),
icon = Icons.Outlined.Download, icon = MaterialSymbols.Rounded.Download,
toConfirm = confirm[5], toConfirm = confirm[5],
onLongClick = { onLongClickItem(5) }, onLongClick = { onLongClickItem(5) },
onClick = onDownloadClicked, onClick = onDownloadClicked,
@@ -167,7 +167,7 @@ fun MangaBottomActionMenu(
if (onDeleteClicked != null) { if (onDeleteClicked != null) {
Button( Button(
title = stringResource(MR.strings.action_delete), title = stringResource(MR.strings.action_delete),
icon = Icons.Outlined.Delete, icon = MaterialSymbols.Rounded.Delete,
toConfirm = confirm[6], toConfirm = confirm[6],
onLongClick = { onLongClickItem(6) }, onLongClick = { onLongClickItem(6) },
onClick = onDeleteClicked, onClick = onDeleteClicked,
@@ -273,21 +273,21 @@ fun LibraryBottomActionMenu(
) { ) {
Button( Button(
title = stringResource(MR.strings.action_move_category), title = stringResource(MR.strings.action_move_category),
icon = Icons.AutoMirrored.Outlined.Label, icon = MaterialSymbols.AutoMirroredRounded.Label,
toConfirm = confirm[0], toConfirm = confirm[0],
onLongClick = { onLongClickItem(0) }, onLongClick = { onLongClickItem(0) },
onClick = onChangeCategoryClicked, onClick = onChangeCategoryClicked,
) )
Button( Button(
title = stringResource(MR.strings.action_mark_as_read), title = stringResource(MR.strings.action_mark_as_read),
icon = Icons.Outlined.DoneAll, icon = MaterialSymbols.Rounded.DoneAll,
toConfirm = confirm[1], toConfirm = confirm[1],
onLongClick = { onLongClickItem(1) }, onLongClick = { onLongClickItem(1) },
onClick = onMarkAsReadClicked, onClick = onMarkAsReadClicked,
) )
Button( Button(
title = stringResource(MR.strings.action_mark_as_unread), title = stringResource(MR.strings.action_mark_as_unread),
icon = Icons.Outlined.RemoveDone, icon = MaterialSymbols.Rounded.RemoveDone,
toConfirm = confirm[2], toConfirm = confirm[2],
onLongClick = { onLongClickItem(2) }, onLongClick = { onLongClickItem(2) },
onClick = onMarkAsUnreadClicked, onClick = onMarkAsUnreadClicked,
@@ -296,7 +296,7 @@ fun LibraryBottomActionMenu(
var downloadExpanded by remember { mutableStateOf(false) } var downloadExpanded by remember { mutableStateOf(false) }
Button( Button(
title = stringResource(MR.strings.action_download), title = stringResource(MR.strings.action_download),
icon = Icons.Outlined.Download, icon = MaterialSymbols.Rounded.Download,
toConfirm = confirm[3], toConfirm = confirm[3],
onLongClick = { onLongClickItem(3) }, onLongClick = { onLongClickItem(3) },
onClick = { downloadExpanded = !downloadExpanded }, onClick = { downloadExpanded = !downloadExpanded },
@@ -312,14 +312,14 @@ fun LibraryBottomActionMenu(
if (!itemOverflow) { if (!itemOverflow) {
Button( Button(
title = stringResource(MR.strings.migrate), title = stringResource(MR.strings.migrate),
icon = Icons.Outlined.SwapCalls, icon = MaterialSymbols.Rounded.SwapCalls,
toConfirm = confirm[4], toConfirm = confirm[4],
onLongClick = { onLongClickItem(4) }, onLongClick = { onLongClickItem(4) },
onClick = onMigrateClicked, onClick = onMigrateClicked,
) )
Button( Button(
title = stringResource(MR.strings.action_delete), title = stringResource(MR.strings.action_delete),
icon = Icons.Outlined.Delete, icon = MaterialSymbols.Rounded.Delete,
toConfirm = confirm[5], toConfirm = confirm[5],
onLongClick = { onLongClickItem(5) }, onLongClick = { onLongClickItem(5) },
onClick = onDeleteClicked, onClick = onDeleteClicked,
@@ -328,7 +328,7 @@ fun LibraryBottomActionMenu(
var overflowMenuOpen by remember { mutableStateOf(false) } var overflowMenuOpen by remember { mutableStateOf(false) }
Button( Button(
title = stringResource(MR.strings.label_more), title = stringResource(MR.strings.label_more),
icon = Icons.Outlined.MoreVert, icon = MaterialSymbols.Rounded.MoreVert,
toConfirm = false, toConfirm = false,
onLongClick = {}, onLongClick = {},
onClick = { overflowMenuOpen = true }, onClick = { overflowMenuOpen = true },
@@ -7,16 +7,6 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.sizeIn import androidx.compose.foundation.layout.sizeIn
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Bookmark
import androidx.compose.material.icons.filled.Circle
import androidx.compose.material.icons.outlined.BookmarkAdd
import androidx.compose.material.icons.outlined.BookmarkRemove
import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material.icons.outlined.Done
import androidx.compose.material.icons.outlined.Download
import androidx.compose.material.icons.outlined.FileDownloadOff
import androidx.compose.material.icons.outlined.RemoveDone
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.LocalContentColor import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -38,6 +28,16 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import eu.kanade.tachiyomi.data.download.model.Download import eu.kanade.tachiyomi.data.download.model.Download
import me.saket.swipe.SwipeableActionsBox import me.saket.swipe.SwipeableActionsBox
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.BookmarkAdd
import mihon.icons.materialsymbols.rounded.BookmarkRemove
import mihon.icons.materialsymbols.rounded.Delete
import mihon.icons.materialsymbols.rounded.Done
import mihon.icons.materialsymbols.rounded.Download
import mihon.icons.materialsymbols.rounded.FileDownloadOff
import mihon.icons.materialsymbols.rounded.RemoveDone
import mihon.icons.materialsymbols.roundedfilled.Bookmark
import mihon.icons.materialsymbols.roundedfilled.Circle
import tachiyomi.domain.library.service.LibraryPreferences import tachiyomi.domain.library.service.LibraryPreferences
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.DISABLED_ALPHA import tachiyomi.presentation.core.components.material.DISABLED_ALPHA
@@ -109,7 +109,7 @@ fun MangaChapterListItem(
var textHeight by remember { mutableIntStateOf(0) } var textHeight by remember { mutableIntStateOf(0) }
if (!read) { if (!read) {
Icon( Icon(
imageVector = Icons.Filled.Circle, imageVector = MaterialSymbols.RoundedFilled.Circle,
contentDescription = stringResource(MR.strings.unread), contentDescription = stringResource(MR.strings.unread),
modifier = Modifier modifier = Modifier
.height(8.dp) .height(8.dp)
@@ -119,7 +119,7 @@ fun MangaChapterListItem(
} }
if (bookmark) { if (bookmark) {
Icon( Icon(
imageVector = Icons.Filled.Bookmark, imageVector = MaterialSymbols.RoundedFilled.Bookmark,
contentDescription = stringResource(MR.strings.action_filter_bookmarked), contentDescription = stringResource(MR.strings.action_filter_bookmarked),
modifier = Modifier modifier = Modifier
.sizeIn(maxHeight = with(LocalDensity.current) { textHeight.toDp() - 2.dp }), .sizeIn(maxHeight = with(LocalDensity.current) { textHeight.toDp() - 2.dp }),
@@ -192,22 +192,22 @@ private fun getSwipeAction(
): me.saket.swipe.SwipeAction? { ): me.saket.swipe.SwipeAction? {
return when (action) { return when (action) {
LibraryPreferences.ChapterSwipeAction.ToggleRead -> swipeAction( LibraryPreferences.ChapterSwipeAction.ToggleRead -> swipeAction(
icon = if (!read) Icons.Outlined.Done else Icons.Outlined.RemoveDone, icon = if (!read) MaterialSymbols.Rounded.Done else MaterialSymbols.Rounded.RemoveDone,
background = background, background = background,
isUndo = read, isUndo = read,
onSwipe = onSwipe, onSwipe = onSwipe,
) )
LibraryPreferences.ChapterSwipeAction.ToggleBookmark -> swipeAction( LibraryPreferences.ChapterSwipeAction.ToggleBookmark -> swipeAction(
icon = if (!bookmark) Icons.Outlined.BookmarkAdd else Icons.Outlined.BookmarkRemove, icon = if (!bookmark) MaterialSymbols.Rounded.BookmarkAdd else MaterialSymbols.Rounded.BookmarkRemove,
background = background, background = background,
isUndo = bookmark, isUndo = bookmark,
onSwipe = onSwipe, onSwipe = onSwipe,
) )
LibraryPreferences.ChapterSwipeAction.Download -> swipeAction( LibraryPreferences.ChapterSwipeAction.Download -> swipeAction(
icon = when (downloadState) { icon = when (downloadState) {
Download.State.NOT_DOWNLOADED, Download.State.ERROR -> Icons.Outlined.Download Download.State.NOT_DOWNLOADED, Download.State.ERROR -> MaterialSymbols.Rounded.Download
Download.State.QUEUE, Download.State.DOWNLOADING -> Icons.Outlined.FileDownloadOff Download.State.QUEUE, Download.State.DOWNLOADING -> MaterialSymbols.Rounded.FileDownloadOff
Download.State.DOWNLOADED -> Icons.Outlined.Delete Download.State.DOWNLOADED -> MaterialSymbols.Rounded.Delete
}, },
background = background, background = background,
onSwipe = onSwipe, onSwipe = onSwipe,
@@ -10,11 +10,6 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Close
import androidx.compose.material.icons.outlined.Edit
import androidx.compose.material.icons.outlined.Save
import androidx.compose.material.icons.outlined.Share
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
@@ -61,6 +56,11 @@ import eu.kanade.tachiyomi.ui.reader.viewer.ReaderPageImageView
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import mihon.app.di.appGraph import mihon.app.di.appGraph
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.Edit
import mihon.icons.materialsymbols.rounded.Save
import mihon.icons.materialsymbols.rounded.Share
import tachiyomi.domain.manga.model.Manga import tachiyomi.domain.manga.model.Manga
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.components.material.Scaffold
@@ -100,7 +100,7 @@ fun MangaCoverDialog(
ActionsPill { ActionsPill {
IconButton(onClick = onDismissRequest) { IconButton(onClick = onDismissRequest) {
Icon( Icon(
imageVector = Icons.Outlined.Close, imageVector = MaterialSymbols.Rounded.Close,
contentDescription = stringResource(MR.strings.action_close), contentDescription = stringResource(MR.strings.action_close),
) )
} }
@@ -111,12 +111,12 @@ fun MangaCoverDialog(
actions = listOf( actions = listOf(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_share), title = stringResource(MR.strings.action_share),
icon = Icons.Outlined.Share, icon = MaterialSymbols.Rounded.Share,
onClick = onShareClick, onClick = onShareClick,
), ),
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_save), title = stringResource(MR.strings.action_save),
icon = Icons.Outlined.Save, icon = MaterialSymbols.Rounded.Save,
onClick = onSaveClick, onClick = onSaveClick,
), ),
), ),
@@ -134,7 +134,7 @@ fun MangaCoverDialog(
}, },
) { ) {
Icon( Icon(
imageVector = Icons.Outlined.Edit, imageVector = MaterialSymbols.Rounded.Edit,
contentDescription = stringResource(MR.strings.action_edit_cover), contentDescription = stringResource(MR.strings.action_edit_cover),
) )
} }
@@ -25,22 +25,6 @@ import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.text.appendInlineContent import androidx.compose.foundation.text.appendInlineContent
import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Brush
import androidx.compose.material.icons.filled.Favorite
import androidx.compose.material.icons.filled.HourglassEmpty
import androidx.compose.material.icons.filled.PersonOutline
import androidx.compose.material.icons.filled.Warning
import androidx.compose.material.icons.outlined.AttachMoney
import androidx.compose.material.icons.outlined.Block
import androidx.compose.material.icons.outlined.Close
import androidx.compose.material.icons.outlined.Done
import androidx.compose.material.icons.outlined.DoneAll
import androidx.compose.material.icons.outlined.FavoriteBorder
import androidx.compose.material.icons.outlined.Pause
import androidx.compose.material.icons.outlined.Public
import androidx.compose.material.icons.outlined.Schedule
import androidx.compose.material.icons.outlined.Sync
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.LocalContentColor import androidx.compose.material3.LocalContentColor
@@ -93,6 +77,22 @@ import eu.kanade.tachiyomi.util.system.copyToClipboard
import kotlinx.datetime.TimeZone import kotlinx.datetime.TimeZone
import kotlinx.datetime.daysUntil import kotlinx.datetime.daysUntil
import mihon.app.di.appGraph import mihon.app.di.appGraph
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.AttachMoney
import mihon.icons.materialsymbols.rounded.Block
import mihon.icons.materialsymbols.rounded.Brush
import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.Done
import mihon.icons.materialsymbols.rounded.DoneAll
import mihon.icons.materialsymbols.rounded.Favorite
import mihon.icons.materialsymbols.rounded.HourglassEmpty
import mihon.icons.materialsymbols.rounded.Pause
import mihon.icons.materialsymbols.rounded.Person
import mihon.icons.materialsymbols.rounded.Public
import mihon.icons.materialsymbols.rounded.Schedule
import mihon.icons.materialsymbols.rounded.Sync
import mihon.icons.materialsymbols.rounded.Warning
import mihon.icons.materialsymbols.roundedfilled.Favorite
import org.intellij.markdown.MarkdownElementTypes import org.intellij.markdown.MarkdownElementTypes
import org.intellij.markdown.MarkdownTokenTypes import org.intellij.markdown.MarkdownTokenTypes
import org.intellij.markdown.ast.findChildOfType import org.intellij.markdown.ast.findChildOfType
@@ -203,7 +203,7 @@ fun MangaActionRow(
} else { } else {
stringResource(MR.strings.add_to_library) stringResource(MR.strings.add_to_library)
}, },
icon = if (favorite) Icons.Filled.Favorite else Icons.Outlined.FavoriteBorder, icon = if (favorite) MaterialSymbols.RoundedFilled.Favorite else MaterialSymbols.Rounded.Favorite,
color = if (favorite) MaterialTheme.colorScheme.primary else defaultActionButtonColor, color = if (favorite) MaterialTheme.colorScheme.primary else defaultActionButtonColor,
onClick = onAddToLibraryClicked, onClick = onAddToLibraryClicked,
onLongClick = onEditCategory, onLongClick = onEditCategory,
@@ -218,7 +218,7 @@ fun MangaActionRow(
nextUpdateDays, nextUpdateDays,
) )
}, },
icon = Icons.Default.HourglassEmpty, icon = MaterialSymbols.Rounded.HourglassEmpty,
color = if (isUserIntervalMode) MaterialTheme.colorScheme.primary else defaultActionButtonColor, color = if (isUserIntervalMode) MaterialTheme.colorScheme.primary else defaultActionButtonColor,
onClick = { onEditIntervalClicked?.invoke() }, onClick = { onEditIntervalClicked?.invoke() },
) )
@@ -228,14 +228,14 @@ fun MangaActionRow(
} else { } else {
pluralStringResource(MR.plurals.num_trackers, count = trackingCount, trackingCount) pluralStringResource(MR.plurals.num_trackers, count = trackingCount, trackingCount)
}, },
icon = if (trackingCount == 0) Icons.Outlined.Sync else Icons.Outlined.Done, icon = if (trackingCount == 0) MaterialSymbols.Rounded.Sync else MaterialSymbols.Rounded.Done,
color = if (trackingCount == 0) defaultActionButtonColor else MaterialTheme.colorScheme.primary, color = if (trackingCount == 0) defaultActionButtonColor else MaterialTheme.colorScheme.primary,
onClick = onTrackingClicked, onClick = onTrackingClicked,
) )
if (onWebViewClicked != null) { if (onWebViewClicked != null) {
MangaActionButton( MangaActionButton(
title = stringResource(MR.strings.action_web_view), title = stringResource(MR.strings.action_web_view),
icon = Icons.Outlined.Public, icon = MaterialSymbols.Rounded.Public,
color = defaultActionButtonColor, color = defaultActionButtonColor,
onClick = onWebViewClicked, onClick = onWebViewClicked,
onLongClick = onWebViewLongClicked, onLongClick = onWebViewLongClicked,
@@ -458,7 +458,7 @@ private fun ColumnScope.MangaContentInfo(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Icon( Icon(
imageVector = Icons.Filled.PersonOutline, imageVector = MaterialSymbols.Rounded.Person,
contentDescription = null, contentDescription = null,
modifier = Modifier.size(16.dp), modifier = Modifier.size(16.dp),
) )
@@ -489,7 +489,7 @@ private fun ColumnScope.MangaContentInfo(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Icon( Icon(
imageVector = Icons.Filled.Brush, imageVector = MaterialSymbols.Rounded.Brush,
contentDescription = null, contentDescription = null,
modifier = Modifier.size(16.dp), modifier = Modifier.size(16.dp),
) )
@@ -514,13 +514,13 @@ private fun ColumnScope.MangaContentInfo(
) { ) {
Icon( Icon(
imageVector = when (status) { imageVector = when (status) {
SManga.ONGOING.toLong() -> Icons.Outlined.Schedule SManga.ONGOING.toLong() -> MaterialSymbols.Rounded.Schedule
SManga.COMPLETED.toLong() -> Icons.Outlined.DoneAll SManga.COMPLETED.toLong() -> MaterialSymbols.Rounded.DoneAll
SManga.LICENSED.toLong() -> Icons.Outlined.AttachMoney SManga.LICENSED.toLong() -> MaterialSymbols.Rounded.AttachMoney
SManga.PUBLISHING_FINISHED.toLong() -> Icons.Outlined.Done SManga.PUBLISHING_FINISHED.toLong() -> MaterialSymbols.Rounded.Done
SManga.CANCELLED.toLong() -> Icons.Outlined.Close SManga.CANCELLED.toLong() -> MaterialSymbols.Rounded.Close
SManga.ON_HIATUS.toLong() -> Icons.Outlined.Pause SManga.ON_HIATUS.toLong() -> MaterialSymbols.Rounded.Pause
else -> Icons.Outlined.Block else -> MaterialSymbols.Rounded.Block
}, },
contentDescription = null, contentDescription = null,
modifier = Modifier modifier = Modifier
@@ -544,7 +544,7 @@ private fun ColumnScope.MangaContentInfo(
DotSeparatorText() DotSeparatorText()
if (isStubSource) { if (isStubSource) {
Icon( Icon(
imageVector = Icons.Filled.Warning, imageVector = MaterialSymbols.Rounded.Warning,
contentDescription = null, contentDescription = null,
modifier = Modifier modifier = Modifier
.padding(end = 4.dp) .padding(end = 4.dp)
@@ -7,8 +7,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.EditNote
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -19,6 +17,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.PreviewLightDark import androidx.compose.ui.tooling.preview.PreviewLightDark
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.EditNote
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.Button import tachiyomi.presentation.core.components.material.Button
import tachiyomi.presentation.core.components.material.ButtonDefaults import tachiyomi.presentation.core.components.material.ButtonDefaults
@@ -57,7 +57,7 @@ fun MangaNotesSection(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Icon( Icon(
imageVector = Icons.Filled.EditNote, imageVector = MaterialSymbols.Rounded.EditNote,
contentDescription = null, contentDescription = null,
modifier = Modifier modifier = Modifier
.size(16.dp), .size(16.dp),
@@ -12,12 +12,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.FormatListBulleted
import androidx.compose.material.icons.outlined.FormatBold
import androidx.compose.material.icons.outlined.FormatItalic
import androidx.compose.material.icons.outlined.FormatListNumbered
import androidx.compose.material.icons.outlined.FormatUnderlined
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
@@ -50,6 +44,12 @@ import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.FormatListBulleted
import mihon.icons.materialsymbols.rounded.FormatBold
import mihon.icons.materialsymbols.rounded.FormatItalic
import mihon.icons.materialsymbols.rounded.FormatListNumbered
import mihon.icons.materialsymbols.rounded.FormatUnderlined
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.components.material.padding
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -130,14 +130,14 @@ fun MangaNotesTextArea(
MangaNotesTextAreaButton( MangaNotesTextAreaButton(
onClick = { richTextState.toggleSpanStyle(SpanStyle(fontWeight = FontWeight.Bold)) }, onClick = { richTextState.toggleSpanStyle(SpanStyle(fontWeight = FontWeight.Bold)) },
isSelected = richTextState.currentSpanStyle.fontWeight == FontWeight.Bold, isSelected = richTextState.currentSpanStyle.fontWeight == FontWeight.Bold,
icon = Icons.Outlined.FormatBold, icon = MaterialSymbols.Rounded.FormatBold,
) )
} }
item { item {
MangaNotesTextAreaButton( MangaNotesTextAreaButton(
onClick = { richTextState.toggleSpanStyle(SpanStyle(fontStyle = FontStyle.Italic)) }, onClick = { richTextState.toggleSpanStyle(SpanStyle(fontStyle = FontStyle.Italic)) },
isSelected = richTextState.currentSpanStyle.fontStyle == FontStyle.Italic, isSelected = richTextState.currentSpanStyle.fontStyle == FontStyle.Italic,
icon = Icons.Outlined.FormatItalic, icon = MaterialSymbols.Rounded.FormatItalic,
) )
} }
item { item {
@@ -148,7 +148,7 @@ fun MangaNotesTextArea(
isSelected = richTextState.currentSpanStyle.textDecoration isSelected = richTextState.currentSpanStyle.textDecoration
?.contains(TextDecoration.Underline) ?.contains(TextDecoration.Underline)
?: false, ?: false,
icon = Icons.Outlined.FormatUnderlined, icon = MaterialSymbols.Rounded.FormatUnderlined,
) )
} }
item { item {
@@ -162,14 +162,14 @@ fun MangaNotesTextArea(
MangaNotesTextAreaButton( MangaNotesTextAreaButton(
onClick = { richTextState.toggleUnorderedList() }, onClick = { richTextState.toggleUnorderedList() },
isSelected = richTextState.isUnorderedList, isSelected = richTextState.isUnorderedList,
icon = Icons.AutoMirrored.Outlined.FormatListBulleted, icon = MaterialSymbols.AutoMirroredRounded.FormatListBulleted,
) )
} }
item { item {
MangaNotesTextAreaButton( MangaNotesTextAreaButton(
onClick = { richTextState.toggleOrderedList() }, onClick = { richTextState.toggleOrderedList() },
isSelected = richTextState.isOrderedList, isSelected = richTextState.isOrderedList,
icon = Icons.Outlined.FormatListNumbered, icon = MaterialSymbols.Rounded.FormatListNumbered,
) )
} }
} }
@@ -1,10 +1,5 @@
package eu.kanade.presentation.manga.components package eu.kanade.presentation.manga.components
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Download
import androidx.compose.material.icons.outlined.FilterList
import androidx.compose.material.icons.outlined.FlipToBack
import androidx.compose.material.icons.outlined.SelectAll
import androidx.compose.material3.LocalContentColor import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.surfaceColorAtElevation import androidx.compose.material3.surfaceColorAtElevation
@@ -21,6 +16,11 @@ import eu.kanade.presentation.components.AppBarActions
import eu.kanade.presentation.components.AppBarTitle import eu.kanade.presentation.components.AppBarTitle
import eu.kanade.presentation.components.DownloadDropdownMenu import eu.kanade.presentation.components.DownloadDropdownMenu
import eu.kanade.presentation.manga.DownloadAction import eu.kanade.presentation.manga.DownloadAction
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Download
import mihon.icons.materialsymbols.rounded.FilterList
import mihon.icons.materialsymbols.rounded.FlipToBack
import mihon.icons.materialsymbols.rounded.SelectAll
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
import tachiyomi.presentation.core.theme.active import tachiyomi.presentation.core.theme.active
@@ -80,14 +80,14 @@ fun MangaToolbar(
add( add(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_select_all), title = stringResource(MR.strings.action_select_all),
icon = Icons.Outlined.SelectAll, icon = MaterialSymbols.Rounded.SelectAll,
onClick = onSelectAll, onClick = onSelectAll,
), ),
) )
add( add(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_select_inverse), title = stringResource(MR.strings.action_select_inverse),
icon = Icons.Outlined.FlipToBack, icon = MaterialSymbols.Rounded.FlipToBack,
onClick = onInvertSelection, onClick = onInvertSelection,
), ),
) )
@@ -97,7 +97,7 @@ fun MangaToolbar(
add( add(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.manga_download), title = stringResource(MR.strings.manga_download),
icon = Icons.Outlined.Download, icon = MaterialSymbols.Rounded.Download,
onClick = { downloadExpanded = !downloadExpanded }, onClick = { downloadExpanded = !downloadExpanded },
), ),
) )
@@ -105,7 +105,7 @@ fun MangaToolbar(
add( add(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_filter), title = stringResource(MR.strings.action_filter),
icon = Icons.Outlined.FilterList, icon = MaterialSymbols.Rounded.FilterList,
iconTint = filterTint, iconTint = filterTint,
onClick = onClickFilter, onClick = onClickFilter,
), ),
@@ -5,8 +5,6 @@ import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.text.InlineTextContent import androidx.compose.foundation.text.InlineTextContent
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Image
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@@ -46,6 +44,8 @@ import com.mikepenz.markdown.model.MarkdownTypography
import com.mikepenz.markdown.model.NoOpImageTransformerImpl import com.mikepenz.markdown.model.NoOpImageTransformerImpl
import com.mikepenz.markdown.model.markdownAnnotator import com.mikepenz.markdown.model.markdownAnnotator
import com.mikepenz.markdown.model.rememberMarkdownState import com.mikepenz.markdown.model.rememberMarkdownState
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Image
import org.intellij.markdown.MarkdownTokenTypes.Companion.HTML_TAG import org.intellij.markdown.MarkdownTokenTypes.Companion.HTML_TAG
import org.intellij.markdown.flavours.MarkdownFlavourDescriptor import org.intellij.markdown.flavours.MarkdownFlavourDescriptor
import org.intellij.markdown.flavours.commonmark.CommonMarkFlavourDescriptor import org.intellij.markdown.flavours.commonmark.CommonMarkFlavourDescriptor
@@ -241,7 +241,7 @@ private fun getMarkdownInlineContent() = DefaultMarkdownInlineContent(
), ),
children = { children = {
Icon( Icon(
imageVector = Icons.Outlined.Image, imageVector = MaterialSymbols.Rounded.Image,
contentDescription = null, contentDescription = null,
tint = MaterialTheme.colorScheme.primary, tint = MaterialTheme.colorScheme.primary,
) )
@@ -9,9 +9,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.rounded.CheckBoxOutlineBlank
import androidx.compose.material.icons.rounded.DisabledByDefault
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@@ -27,6 +24,9 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.DialogProperties import androidx.compose.ui.window.DialogProperties
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.CheckBoxOutlineBlank
import mihon.icons.materialsymbols.roundedfilled.DisabledByDefault
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.TextButton import tachiyomi.presentation.core.components.material.TextButton
import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.components.material.padding
@@ -74,9 +74,9 @@ fun ScanlatorFilterDialog(
) { ) {
Icon( Icon(
imageVector = if (isExcluded) { imageVector = if (isExcluded) {
Icons.Rounded.DisabledByDefault MaterialSymbols.RoundedFilled.DisabledByDefault
} else { } else {
Icons.Rounded.CheckBoxOutlineBlank MaterialSymbols.Rounded.CheckBoxOutlineBlank
}, },
tint = if (isExcluded) { tint = if (isExcluded) {
MaterialTheme.colorScheme.primary MaterialTheme.colorScheme.primary
@@ -1,16 +1,6 @@
package eu.kanade.presentation.more package eu.kanade.presentation.more
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.HelpOutline
import androidx.compose.material.icons.automirrored.outlined.Label
import androidx.compose.material.icons.filled.VolunteerActivism
import androidx.compose.material.icons.outlined.CloudOff
import androidx.compose.material.icons.outlined.GetApp
import androidx.compose.material.icons.outlined.Info
import androidx.compose.material.icons.outlined.QueryStats
import androidx.compose.material.icons.outlined.Settings
import androidx.compose.material.icons.outlined.Storage
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector
@@ -21,6 +11,16 @@ import eu.kanade.presentation.more.settings.widget.SwitchPreferenceWidget
import eu.kanade.presentation.more.settings.widget.TextPreferenceWidget import eu.kanade.presentation.more.settings.widget.TextPreferenceWidget
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.ui.more.DownloadQueueState import eu.kanade.tachiyomi.ui.more.DownloadQueueState
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.Help
import mihon.icons.materialsymbols.automirroredrounded.Label
import mihon.icons.materialsymbols.rounded.CloudOff
import mihon.icons.materialsymbols.rounded.Download
import mihon.icons.materialsymbols.rounded.Info
import mihon.icons.materialsymbols.rounded.QueryStats
import mihon.icons.materialsymbols.rounded.Settings
import mihon.icons.materialsymbols.rounded.Storage
import mihon.icons.materialsymbols.rounded.VolunteerActivism
import tachiyomi.core.common.Constants import tachiyomi.core.common.Constants
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.ScrollbarLazyColumn import tachiyomi.presentation.core.components.ScrollbarLazyColumn
@@ -56,7 +56,7 @@ fun MoreScreen(
SwitchPreferenceWidget( SwitchPreferenceWidget(
title = stringResource(MR.strings.label_downloaded_only), title = stringResource(MR.strings.label_downloaded_only),
subtitle = stringResource(MR.strings.downloaded_only_summary), subtitle = stringResource(MR.strings.downloaded_only_summary),
icon = Icons.Outlined.CloudOff, icon = MaterialSymbols.Rounded.CloudOff,
checked = downloadedOnly, checked = downloadedOnly,
onCheckedChanged = onDownloadedOnlyChange, onCheckedChanged = onDownloadedOnlyChange,
) )
@@ -98,28 +98,28 @@ fun MoreScreen(
pluralStringResource(MR.plurals.download_queue_summary, count = pending, pending) pluralStringResource(MR.plurals.download_queue_summary, count = pending, pending)
} }
}, },
icon = Icons.Outlined.GetApp, icon = MaterialSymbols.Rounded.Download,
onPreferenceClick = onClickDownloadQueue, onPreferenceClick = onClickDownloadQueue,
) )
} }
item { item {
TextPreferenceWidget( TextPreferenceWidget(
title = stringResource(MR.strings.categories), title = stringResource(MR.strings.categories),
icon = Icons.AutoMirrored.Outlined.Label, icon = MaterialSymbols.AutoMirroredRounded.Label,
onPreferenceClick = onClickCategories, onPreferenceClick = onClickCategories,
) )
} }
item { item {
TextPreferenceWidget( TextPreferenceWidget(
title = stringResource(MR.strings.label_stats), title = stringResource(MR.strings.label_stats),
icon = Icons.Outlined.QueryStats, icon = MaterialSymbols.Rounded.QueryStats,
onPreferenceClick = onClickStats, onPreferenceClick = onClickStats,
) )
} }
item { item {
TextPreferenceWidget( TextPreferenceWidget(
title = stringResource(MR.strings.label_data_storage), title = stringResource(MR.strings.label_data_storage),
icon = Icons.Outlined.Storage, icon = MaterialSymbols.Rounded.Storage,
onPreferenceClick = onClickDataAndStorage, onPreferenceClick = onClickDataAndStorage,
) )
} }
@@ -129,28 +129,28 @@ fun MoreScreen(
item { item {
TextPreferenceWidget( TextPreferenceWidget(
title = stringResource(MR.strings.label_settings), title = stringResource(MR.strings.label_settings),
icon = Icons.Outlined.Settings, icon = MaterialSymbols.Rounded.Settings,
onPreferenceClick = onClickSettings, onPreferenceClick = onClickSettings,
) )
} }
item { item {
TextPreferenceWidget( TextPreferenceWidget(
title = stringResource(MR.strings.label_support_us), title = stringResource(MR.strings.label_support_us),
icon = Icons.Default.VolunteerActivism, icon = MaterialSymbols.Rounded.VolunteerActivism,
onPreferenceClick = onClickSupport, onPreferenceClick = onClickSupport,
) )
} }
item { item {
TextPreferenceWidget( TextPreferenceWidget(
title = stringResource(MR.strings.pref_category_about), title = stringResource(MR.strings.pref_category_about),
icon = Icons.Outlined.Info, icon = MaterialSymbols.Rounded.Info,
onPreferenceClick = onClickAbout, onPreferenceClick = onClickAbout,
) )
} }
item { item {
TextPreferenceWidget( TextPreferenceWidget(
title = stringResource(MR.strings.label_help), title = stringResource(MR.strings.label_help),
icon = Icons.AutoMirrored.Outlined.HelpOutline, icon = MaterialSymbols.AutoMirroredRounded.Help,
onPreferenceClick = { uriHandler.openUri(Constants.URL_HELP) }, onPreferenceClick = { uriHandler.openUri(Constants.URL_HELP) },
) )
} }
@@ -5,9 +5,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.OpenInNew
import androidx.compose.material.icons.outlined.NewReleases
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
@@ -19,6 +16,9 @@ import androidx.compose.ui.tooling.preview.PreviewLightDark
import eu.kanade.presentation.manga.components.MarkdownRender import eu.kanade.presentation.manga.components.MarkdownRender
import eu.kanade.presentation.theme.TachiyomiPreviewTheme import eu.kanade.presentation.theme.TachiyomiPreviewTheme
import eu.kanade.tachiyomi.ui.more.NewUpdateScreenModel import eu.kanade.tachiyomi.ui.more.NewUpdateScreenModel
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.OpenInNew
import mihon.icons.materialsymbols.rounded.NewReleases
import org.intellij.markdown.flavours.gfm.GFMFlavourDescriptor import org.intellij.markdown.flavours.gfm.GFMFlavourDescriptor
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.components.material.padding
@@ -36,7 +36,7 @@ fun NewUpdateScreen(
onRejectUpdate: () -> Unit, onRejectUpdate: () -> Unit,
) { ) {
InfoScreen( InfoScreen(
icon = Icons.Outlined.NewReleases, icon = MaterialSymbols.Rounded.NewReleases,
headingText = stringResource(MR.strings.update_check_notification_update_available), headingText = stringResource(MR.strings.update_check_notification_update_available),
subtitleText = versionName, subtitleText = versionName,
acceptText = when (stage) { acceptText = when (stage) {
@@ -69,7 +69,7 @@ fun NewUpdateScreen(
) { ) {
Text(text = stringResource(MR.strings.update_check_open)) Text(text = stringResource(MR.strings.update_check_open))
Spacer(modifier = Modifier.width(MaterialTheme.padding.extraSmall)) Spacer(modifier = Modifier.width(MaterialTheme.padding.extraSmall))
Icon(imageVector = Icons.AutoMirrored.Outlined.OpenInNew, contentDescription = null) Icon(imageVector = MaterialSymbols.AutoMirroredRounded.OpenInNew, contentDescription = null)
} }
} }
} }
@@ -6,8 +6,6 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.RocketLaunch
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
@@ -17,6 +15,8 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.RocketLaunch
import soup.compose.material.motion.animation.materialSharedAxisX import soup.compose.material.motion.animation.materialSharedAxisX
import soup.compose.material.motion.animation.rememberSlideDistance import soup.compose.material.motion.animation.rememberSlideDistance
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
@@ -47,7 +47,7 @@ fun OnboardingScreen(
} }
InfoScreen( InfoScreen(
icon = Icons.Outlined.RocketLaunch, icon = MaterialSymbols.Rounded.RocketLaunch,
headingText = stringResource(MR.strings.onboarding_heading), headingText = stringResource(MR.strings.onboarding_heading),
subtitleText = stringResource(MR.strings.onboarding_description), subtitleText = stringResource(MR.strings.onboarding_description),
acceptText = stringResource( acceptText = stringResource(
@@ -11,8 +11,6 @@ import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Check
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.ListItem import androidx.compose.material3.ListItem
@@ -40,6 +38,8 @@ import eu.kanade.presentation.util.rememberRequestPackageInstallsPermissionState
import eu.kanade.tachiyomi.util.system.launchRequestPackageInstallsPermission import eu.kanade.tachiyomi.util.system.launchRequestPackageInstallsPermission
import eu.kanade.tachiyomi.util.system.telemetryIncluded import eu.kanade.tachiyomi.util.system.telemetryIncluded
import mihon.app.di.appGraph import mihon.app.di.appGraph
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Check
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
import tachiyomi.presentation.core.util.collectAsState import tachiyomi.presentation.core.util.collectAsState
@@ -175,7 +175,7 @@ internal class PermissionStep : OnboardingStep {
) { ) {
if (granted) { if (granted) {
Icon( Icon(
imageVector = Icons.Default.Check, imageVector = MaterialSymbols.Rounded.Check,
contentDescription = null, contentDescription = null,
tint = MaterialTheme.colorScheme.primary, tint = MaterialTheme.colorScheme.primary,
) )
@@ -15,8 +15,6 @@ import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.HelpOutline
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Checkbox import androidx.compose.material3.Checkbox
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@@ -60,6 +58,8 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import logcat.LogPriority import logcat.LogPriority
import mihon.app.di.appGraph import mihon.app.di.appGraph
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.Help
import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.common.i18n.stringResource
import tachiyomi.core.common.storage.displayablePath import tachiyomi.core.common.storage.displayablePath
import tachiyomi.core.common.util.lang.launchNonCancellable import tachiyomi.core.common.util.lang.launchNonCancellable
@@ -87,7 +87,7 @@ object SettingsDataScreen : SearchableSettings {
val uriHandler = LocalUriHandler.current val uriHandler = LocalUriHandler.current
IconButton(onClick = { uriHandler.openUri(HELP_URL) }) { IconButton(onClick = { uriHandler.openUri(HELP_URL) }) {
Icon( Icon(
imageVector = Icons.AutoMirrored.Outlined.HelpOutline, imageVector = MaterialSymbols.AutoMirroredRounded.Help,
contentDescription = stringResource(MR.strings.tracking_guide), contentDescription = stringResource(MR.strings.tracking_guide),
) )
} }
@@ -7,18 +7,6 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.ChromeReaderMode
import androidx.compose.material.icons.outlined.Code
import androidx.compose.material.icons.outlined.CollectionsBookmark
import androidx.compose.material.icons.outlined.Explore
import androidx.compose.material.icons.outlined.GetApp
import androidx.compose.material.icons.outlined.Info
import androidx.compose.material.icons.outlined.Palette
import androidx.compose.material.icons.outlined.Search
import androidx.compose.material.icons.outlined.Security
import androidx.compose.material.icons.outlined.Storage
import androidx.compose.material.icons.outlined.Sync
import androidx.compose.material3.LocalContentColor import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarDefaults
@@ -44,6 +32,18 @@ import eu.kanade.presentation.more.settings.screen.about.AboutScreen
import eu.kanade.presentation.more.settings.widget.TextPreferenceWidget import eu.kanade.presentation.more.settings.widget.TextPreferenceWidget
import eu.kanade.presentation.util.LocalBackPress import eu.kanade.presentation.util.LocalBackPress
import eu.kanade.presentation.util.Screen import eu.kanade.presentation.util.Screen
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ChromeReaderMode
import mihon.icons.materialsymbols.rounded.Code
import mihon.icons.materialsymbols.rounded.CollectionsBookmark
import mihon.icons.materialsymbols.rounded.Download
import mihon.icons.materialsymbols.rounded.Explore
import mihon.icons.materialsymbols.rounded.Info
import mihon.icons.materialsymbols.rounded.Palette
import mihon.icons.materialsymbols.rounded.Search
import mihon.icons.materialsymbols.rounded.Security
import mihon.icons.materialsymbols.rounded.Storage
import mihon.icons.materialsymbols.rounded.Sync
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.components.material.Scaffold
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -90,7 +90,7 @@ object SettingsMainScreen : Screen() {
listOf( listOf(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_search), title = stringResource(MR.strings.action_search),
icon = Icons.Outlined.Search, icon = MaterialSymbols.Rounded.Search,
onClick = { navigator.navigate(SettingsSearchScreen(), twoPane) }, onClick = { navigator.navigate(SettingsSearchScreen(), twoPane) },
), ),
), ),
@@ -174,55 +174,55 @@ object SettingsMainScreen : Screen() {
Item( Item(
titleRes = MR.strings.pref_category_appearance, titleRes = MR.strings.pref_category_appearance,
subtitleRes = MR.strings.pref_appearance_summary, subtitleRes = MR.strings.pref_appearance_summary,
icon = Icons.Outlined.Palette, icon = MaterialSymbols.Rounded.Palette,
screen = SettingsAppearanceScreen, screen = SettingsAppearanceScreen,
), ),
Item( Item(
titleRes = MR.strings.pref_category_library, titleRes = MR.strings.pref_category_library,
subtitleRes = MR.strings.pref_library_summary, subtitleRes = MR.strings.pref_library_summary,
icon = Icons.Outlined.CollectionsBookmark, icon = MaterialSymbols.Rounded.CollectionsBookmark,
screen = SettingsLibraryScreen, screen = SettingsLibraryScreen,
), ),
Item( Item(
titleRes = MR.strings.pref_category_reader, titleRes = MR.strings.pref_category_reader,
subtitleRes = MR.strings.pref_reader_summary, subtitleRes = MR.strings.pref_reader_summary,
icon = Icons.AutoMirrored.Outlined.ChromeReaderMode, icon = MaterialSymbols.AutoMirroredRounded.ChromeReaderMode,
screen = SettingsReaderScreen, screen = SettingsReaderScreen,
), ),
Item( Item(
titleRes = MR.strings.pref_category_downloads, titleRes = MR.strings.pref_category_downloads,
subtitleRes = MR.strings.pref_downloads_summary, subtitleRes = MR.strings.pref_downloads_summary,
icon = Icons.Outlined.GetApp, icon = MaterialSymbols.Rounded.Download,
screen = SettingsDownloadScreen, screen = SettingsDownloadScreen,
), ),
Item( Item(
titleRes = MR.strings.pref_category_tracking, titleRes = MR.strings.pref_category_tracking,
subtitleRes = MR.strings.pref_tracking_summary, subtitleRes = MR.strings.pref_tracking_summary,
icon = Icons.Outlined.Sync, icon = MaterialSymbols.Rounded.Sync,
screen = SettingsTrackingScreen, screen = SettingsTrackingScreen,
), ),
Item( Item(
titleRes = MR.strings.browse, titleRes = MR.strings.browse,
subtitleRes = MR.strings.pref_browse_summary, subtitleRes = MR.strings.pref_browse_summary,
icon = Icons.Outlined.Explore, icon = MaterialSymbols.Rounded.Explore,
screen = SettingsBrowseScreen, screen = SettingsBrowseScreen,
), ),
Item( Item(
titleRes = MR.strings.label_data_storage, titleRes = MR.strings.label_data_storage,
subtitleRes = MR.strings.pref_backup_summary, subtitleRes = MR.strings.pref_backup_summary,
icon = Icons.Outlined.Storage, icon = MaterialSymbols.Rounded.Storage,
screen = SettingsDataScreen, screen = SettingsDataScreen,
), ),
Item( Item(
titleRes = MR.strings.pref_category_security, titleRes = MR.strings.pref_category_security,
subtitleRes = MR.strings.pref_security_summary, subtitleRes = MR.strings.pref_security_summary,
icon = Icons.Outlined.Security, icon = MaterialSymbols.Rounded.Security,
screen = SettingsSecurityScreen, screen = SettingsSecurityScreen,
), ),
Item( Item(
titleRes = MR.strings.pref_category_advanced, titleRes = MR.strings.pref_category_advanced,
subtitleRes = MR.strings.pref_advanced_summary, subtitleRes = MR.strings.pref_advanced_summary,
icon = Icons.Outlined.Code, icon = MaterialSymbols.Rounded.Code,
screen = SettingsAdvancedScreen, screen = SettingsAdvancedScreen,
), ),
Item( Item(
@@ -230,7 +230,7 @@ object SettingsMainScreen : Screen() {
formatSubtitle = { formatSubtitle = {
"${stringResource(MR.strings.app_name)} ${AboutScreen.getVersionName(withBuildDate = false)}" "${stringResource(MR.strings.app_name)} ${AboutScreen.getVersionName(withBuildDate = false)}"
}, },
icon = Icons.Outlined.Info, icon = MaterialSymbols.Rounded.Info,
screen = AboutScreen, screen = AboutScreen,
), ),
) )
@@ -17,8 +17,6 @@ import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.text.input.TextFieldLineLimits import androidx.compose.foundation.text.input.TextFieldLineLimits
import androidx.compose.foundation.text.input.clearText import androidx.compose.foundation.text.input.clearText
import androidx.compose.foundation.text.input.rememberTextFieldState import androidx.compose.foundation.text.input.rememberTextFieldState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Close
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
@@ -50,6 +48,8 @@ import cafe.adriel.voyager.navigator.currentOrThrow
import eu.kanade.presentation.components.UpIcon import eu.kanade.presentation.components.UpIcon
import eu.kanade.presentation.more.settings.Preference import eu.kanade.presentation.more.settings.Preference
import eu.kanade.presentation.util.Screen import eu.kanade.presentation.util.Screen
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Close
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.components.material.Scaffold
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -128,7 +128,7 @@ class SettingsSearchScreen : Screen() {
if (textFieldState.text.isNotEmpty()) { if (textFieldState.text.isNotEmpty()) {
IconButton(onClick = { textFieldState.clearText() }) { IconButton(onClick = { textFieldState.clearText() }) {
Icon( Icon(
imageVector = Icons.Outlined.Close, imageVector = MaterialSymbols.Rounded.Close,
contentDescription = null, contentDescription = null,
tint = MaterialTheme.colorScheme.onSurfaceVariant, tint = MaterialTheme.colorScheme.onSurfaceVariant,
) )
@@ -7,11 +7,6 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.HelpOutline
import androidx.compose.material.icons.filled.Visibility
import androidx.compose.material.icons.filled.VisibilityOff
import androidx.compose.material.icons.outlined.Close
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
@@ -57,6 +52,11 @@ import eu.kanade.tachiyomi.data.track.shikimori.ShikimoriApi
import eu.kanade.tachiyomi.util.system.openInBrowser import eu.kanade.tachiyomi.util.system.openInBrowser
import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.util.system.toast
import mihon.app.di.appGraph import mihon.app.di.appGraph
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.Help
import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.Visibility
import mihon.icons.materialsymbols.rounded.VisibilityOff
import tachiyomi.core.common.util.lang.launchIO import tachiyomi.core.common.util.lang.launchIO
import tachiyomi.core.common.util.lang.withUIContext import tachiyomi.core.common.util.lang.withUIContext
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
@@ -74,7 +74,7 @@ object SettingsTrackingScreen : SearchableSettings {
val uriHandler = LocalUriHandler.current val uriHandler = LocalUriHandler.current
IconButton(onClick = { uriHandler.openUri("https://mihon.app/docs/guides/tracking") }) { IconButton(onClick = { uriHandler.openUri("https://mihon.app/docs/guides/tracking") }) {
Icon( Icon(
imageVector = Icons.AutoMirrored.Outlined.HelpOutline, imageVector = MaterialSymbols.AutoMirroredRounded.Help,
contentDescription = stringResource(MR.strings.tracking_guide), contentDescription = stringResource(MR.strings.tracking_guide),
) )
} }
@@ -219,7 +219,7 @@ object SettingsTrackingScreen : SearchableSettings {
) )
IconButton(onClick = onDismissRequest) { IconButton(onClick = onDismissRequest) {
Icon( Icon(
imageVector = Icons.Outlined.Close, imageVector = MaterialSymbols.Rounded.Close,
contentDescription = stringResource(MR.strings.action_close), contentDescription = stringResource(MR.strings.action_close),
) )
} }
@@ -251,9 +251,9 @@ object SettingsTrackingScreen : SearchableSettings {
IconButton(onClick = { hidePassword = !hidePassword }) { IconButton(onClick = { hidePassword = !hidePassword }) {
Icon( Icon(
imageVector = if (hidePassword) { imageVector = if (hidePassword) {
Icons.Filled.Visibility MaterialSymbols.Rounded.Visibility
} else { } else {
Icons.Filled.VisibilityOff MaterialSymbols.Rounded.VisibilityOff
}, },
contentDescription = null, contentDescription = null,
) )
@@ -8,8 +8,6 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Public
import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
@@ -43,6 +41,14 @@ import kotlinx.datetime.TimeZone
import kotlinx.datetime.toLocalDateTime import kotlinx.datetime.toLocalDateTime
import logcat.LogPriority import logcat.LogPriority
import mihon.app.di.appGraph import mihon.app.di.appGraph
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Public
import mihon.icons.simpleicons.Discord
import mihon.icons.simpleicons.Facebook
import mihon.icons.simpleicons.Github
import mihon.icons.simpleicons.Reddit
import mihon.icons.simpleicons.SimpleIcons
import mihon.icons.simpleicons.X
import tachiyomi.core.common.Constants import tachiyomi.core.common.Constants
import tachiyomi.core.common.util.lang.withIOContext import tachiyomi.core.common.util.lang.withIOContext
import tachiyomi.core.common.util.lang.withUIContext import tachiyomi.core.common.util.lang.withUIContext
@@ -53,12 +59,6 @@ import tachiyomi.presentation.core.components.LinkIcon
import tachiyomi.presentation.core.components.ScrollbarLazyColumn import tachiyomi.presentation.core.components.ScrollbarLazyColumn
import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.components.material.Scaffold
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
import tachiyomi.presentation.core.icons.CustomIcons
import tachiyomi.presentation.core.icons.Discord
import tachiyomi.presentation.core.icons.Facebook
import tachiyomi.presentation.core.icons.Github
import tachiyomi.presentation.core.icons.Reddit
import tachiyomi.presentation.core.icons.X
import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get import uy.kohesive.injekt.api.get
import kotlin.time.Instant import kotlin.time.Instant
@@ -175,32 +175,32 @@ object AboutScreen : Screen() {
) { ) {
LinkIcon( LinkIcon(
label = stringResource(MR.strings.website), label = stringResource(MR.strings.website),
icon = Icons.Outlined.Public, icon = MaterialSymbols.Rounded.Public,
url = "https://mihon.app", url = "https://mihon.app",
) )
LinkIcon( LinkIcon(
label = "Discord", label = "Discord",
icon = CustomIcons.Discord, icon = SimpleIcons.Discord,
url = Constants.URL_DISCORD, url = Constants.URL_DISCORD,
) )
LinkIcon( LinkIcon(
label = "X", label = "X",
icon = CustomIcons.X, icon = SimpleIcons.X,
url = "https://x.com/mihonapp", url = "https://x.com/mihonapp",
) )
LinkIcon( LinkIcon(
label = "Facebook", label = "Facebook",
icon = CustomIcons.Facebook, icon = SimpleIcons.Facebook,
url = "https://facebook.com/mihonapp", url = "https://facebook.com/mihonapp",
) )
LinkIcon( LinkIcon(
label = "Reddit", label = "Reddit",
icon = CustomIcons.Reddit, icon = SimpleIcons.Reddit,
url = "https://www.reddit.com/r/mihonapp", url = "https://www.reddit.com/r/mihonapp",
) )
LinkIcon( LinkIcon(
label = "GitHub", label = "GitHub",
icon = CustomIcons.Github, icon = SimpleIcons.Github,
url = "https://github.com/mihonapp", url = "https://github.com/mihonapp",
) )
} }
@@ -8,9 +8,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.FlipToBack
import androidx.compose.material.icons.outlined.SelectAll
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Checkbox import androidx.compose.material3.Checkbox
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -49,6 +46,9 @@ import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.update import kotlinx.coroutines.flow.update
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.FlipToBack
import mihon.icons.materialsymbols.rounded.SelectAll
import tachiyomi.core.common.util.lang.launchIO import tachiyomi.core.common.util.lang.launchIO
import tachiyomi.core.common.util.lang.launchUI import tachiyomi.core.common.util.lang.launchUI
import tachiyomi.core.common.util.lang.toLong import tachiyomi.core.common.util.lang.toLong
@@ -147,12 +147,12 @@ class ClearDatabaseScreen : Screen() {
actions = listOf( actions = listOf(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_select_all), title = stringResource(MR.strings.action_select_all),
icon = Icons.Outlined.SelectAll, icon = MaterialSymbols.Rounded.SelectAll,
onClick = viewModel::selectAll, onClick = viewModel::selectAll,
), ),
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_select_inverse), title = stringResource(MR.strings.action_select_inverse),
icon = Icons.Outlined.FlipToBack, icon = MaterialSymbols.Rounded.FlipToBack,
onClick = viewModel::invertSelection, onClick = viewModel::invertSelection,
), ),
), ),
@@ -6,8 +6,6 @@ import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Check
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.ListItem import androidx.compose.material3.ListItem
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -27,6 +25,8 @@ import eu.kanade.presentation.components.AppBar
import eu.kanade.presentation.util.Screen import eu.kanade.presentation.util.Screen
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.util.system.LocaleHelper import eu.kanade.tachiyomi.util.system.LocaleHelper
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Check
import org.xmlpull.v1.XmlPullParser import org.xmlpull.v1.XmlPullParser
import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
@@ -74,7 +74,7 @@ class AppLanguageScreen : Screen() {
trailingContent = { trailingContent = {
if (currentLanguage == it.langTag) { if (currentLanguage == it.langTag) {
Icon( Icon(
imageVector = Icons.Default.Check, imageVector = MaterialSymbols.Rounded.Check,
contentDescription = null, contentDescription = null,
tint = MaterialTheme.colorScheme.primary, tint = MaterialTheme.colorScheme.primary,
) )
@@ -7,11 +7,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.Label
import androidx.compose.material.icons.outlined.ContentCopy
import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material.icons.outlined.Public
import androidx.compose.material3.ElevatedCard import androidx.compose.material3.ElevatedCard
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
@@ -21,11 +16,16 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import mihon.domain.extension.model.ExtensionStore import mihon.domain.extension.model.ExtensionStore
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.Label
import mihon.icons.materialsymbols.rounded.ContentCopy
import mihon.icons.materialsymbols.rounded.Delete
import mihon.icons.materialsymbols.rounded.Public
import mihon.icons.simpleicons.Discord
import mihon.icons.simpleicons.SimpleIcons
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.components.material.padding
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
import tachiyomi.presentation.core.icons.CustomIcons
import tachiyomi.presentation.core.icons.Discord
@Composable @Composable
fun ExtensionStoresContent( fun ExtensionStoresContent(
@@ -81,7 +81,7 @@ private fun ExtensionStoresListItem(
), ),
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Icon(imageVector = Icons.AutoMirrored.Outlined.Label, contentDescription = null) Icon(imageVector = MaterialSymbols.AutoMirroredRounded.Label, contentDescription = null)
Text( Text(
text = store.name, text = store.name,
modifier = Modifier.padding(start = MaterialTheme.padding.medium), modifier = Modifier.padding(start = MaterialTheme.padding.medium),
@@ -95,7 +95,7 @@ private fun ExtensionStoresListItem(
) { ) {
IconButton(onClick = onOpenWebsite) { IconButton(onClick = onOpenWebsite) {
Icon( Icon(
imageVector = Icons.Outlined.Public, imageVector = MaterialSymbols.Rounded.Public,
contentDescription = stringResource(MR.strings.action_open_in_browser), contentDescription = stringResource(MR.strings.action_open_in_browser),
) )
} }
@@ -103,7 +103,7 @@ private fun ExtensionStoresListItem(
if (store.contact.discord != null) { if (store.contact.discord != null) {
IconButton(onClick = onOpenDiscord) { IconButton(onClick = onOpenDiscord) {
Icon( Icon(
imageVector = CustomIcons.Discord, imageVector = SimpleIcons.Discord,
contentDescription = null, contentDescription = null,
) )
} }
@@ -111,14 +111,14 @@ private fun ExtensionStoresListItem(
IconButton(onClick = onCopy) { IconButton(onClick = onCopy) {
Icon( Icon(
imageVector = Icons.Outlined.ContentCopy, imageVector = MaterialSymbols.Rounded.ContentCopy,
contentDescription = stringResource(MR.strings.action_copy_to_clipboard), contentDescription = stringResource(MR.strings.action_copy_to_clipboard),
) )
} }
IconButton(onClick = onDelete) { IconButton(onClick = onDelete) {
Icon( Icon(
imageVector = Icons.Outlined.Delete, imageVector = MaterialSymbols.Rounded.Delete,
contentDescription = stringResource(MR.strings.action_delete), contentDescription = stringResource(MR.strings.action_delete),
) )
} }
@@ -3,8 +3,6 @@ package eu.kanade.presentation.more.settings.screen.browse.components
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Refresh
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -14,6 +12,8 @@ import eu.kanade.presentation.category.components.CategoryFloatingActionButton
import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.AppBar
import eu.kanade.presentation.more.settings.screen.browse.ExtensionStoreScreenState import eu.kanade.presentation.more.settings.screen.browse.ExtensionStoreScreenState
import mihon.domain.extension.model.ExtensionStore import mihon.domain.extension.model.ExtensionStore
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Refresh
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.components.material.Scaffold
import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.components.material.padding
@@ -43,7 +43,7 @@ fun ExtensionStoresScreen(
actions = { actions = {
IconButton(onClick = onClickRefresh) { IconButton(onClick = onClickRefresh) {
Icon( Icon(
imageVector = Icons.Outlined.Refresh, imageVector = MaterialSymbols.Rounded.Refresh,
contentDescription = stringResource(resource = MR.strings.action_webview_refresh), contentDescription = stringResource(resource = MR.strings.action_webview_refresh),
) )
} }
@@ -3,8 +3,6 @@ package eu.kanade.presentation.more.settings.screen.debug
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ContentCopy
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
@@ -20,6 +18,8 @@ import eu.kanade.presentation.util.Screen
import eu.kanade.tachiyomi.data.backup.models.Backup import eu.kanade.tachiyomi.data.backup.models.Backup
import eu.kanade.tachiyomi.util.system.copyToClipboard import eu.kanade.tachiyomi.util.system.copyToClipboard
import kotlinx.serialization.protobuf.schema.ProtoBufSchemaGenerator import kotlinx.serialization.protobuf.schema.ProtoBufSchemaGenerator
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.ContentCopy
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.components.material.Scaffold
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -47,7 +47,7 @@ class BackupSchemaScreen : Screen() {
listOf( listOf(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_copy_to_clipboard), title = stringResource(MR.strings.action_copy_to_clipboard),
icon = Icons.Default.ContentCopy, icon = MaterialSymbols.Rounded.ContentCopy,
onClick = { onClick = {
context.copyToClipboard(TITLE, schema) context.copyToClipboard(TITLE, schema)
}, },
@@ -1,8 +1,6 @@
package eu.kanade.presentation.more.settings.screen.debug package eu.kanade.presentation.more.settings.screen.debug
import android.os.Build import android.os.Build
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Autorenew
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -27,6 +25,8 @@ import kotlinx.coroutines.guava.await
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import mihon.app.di.appGraph import mihon.app.di.appGraph
import mihon.core.common.FeatureFlags import mihon.core.common.FeatureFlags
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Autorenew
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.util.collectAsState import tachiyomi.presentation.core.util.collectAsState
@@ -86,7 +86,7 @@ class DebugInfoScreen : Screen() {
}, },
) { ) {
Icon( Icon(
imageVector = Icons.Outlined.Autorenew, imageVector = MaterialSymbols.Rounded.Autorenew,
tint = MaterialTheme.colorScheme.primary, tint = MaterialTheme.colorScheme.primary,
contentDescription = null, contentDescription = null,
) )
@@ -6,8 +6,6 @@ import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ContentCopy
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@@ -42,6 +40,8 @@ import kotlinx.coroutines.flow.stateIn
import kotlinx.datetime.TimeZone import kotlinx.datetime.TimeZone
import kotlinx.datetime.toLocalDateTime import kotlinx.datetime.toLocalDateTime
import mihon.app.di.appGraph import mihon.app.di.appGraph
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.ContentCopy
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.components.material.Scaffold
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -75,7 +75,7 @@ class WorkerInfoScreen : Screen() {
listOf( listOf(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_copy_to_clipboard), title = stringResource(MR.strings.action_copy_to_clipboard),
icon = Icons.Default.ContentCopy, icon = MaterialSymbols.Rounded.ContentCopy,
onClick = { onClick = {
context.copyToClipboard(TITLE, enqueued + finished + running) context.copyToClipboard(TITLE, enqueued + finished + running)
}, },
@@ -21,8 +21,6 @@ import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.CheckCircle
import androidx.compose.material3.DividerDefaults import androidx.compose.material3.DividerDefaults
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -48,6 +46,8 @@ import eu.kanade.presentation.manga.components.MangaCover
import eu.kanade.presentation.theme.TachiyomiTheme import eu.kanade.presentation.theme.TachiyomiTheme
import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.DeviceUtil
import eu.kanade.tachiyomi.util.system.isDynamicColorAvailable import eu.kanade.tachiyomi.util.system.isDynamicColorAvailable
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.roundedfilled.CheckCircle
import tachiyomi.core.common.preference.InMemoryPreferenceStore import tachiyomi.core.common.preference.InMemoryPreferenceStore
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.components.material.padding
@@ -175,7 +175,7 @@ fun AppThemePreviewItem(
) { ) {
if (selected) { if (selected) {
Icon( Icon(
imageVector = Icons.Filled.CheckCircle, imageVector = MaterialSymbols.RoundedFilled.CheckCircle,
contentDescription = stringResource(MR.strings.selected), contentDescription = stringResource(MR.strings.selected),
tint = MaterialTheme.colorScheme.primary, tint = MaterialTheme.colorScheme.primary,
) )
@@ -1,9 +1,6 @@
package eu.kanade.presentation.more.settings.widget package eu.kanade.presentation.more.settings.widget
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Cancel
import androidx.compose.material.icons.filled.Error
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
@@ -22,6 +19,9 @@ import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.window.DialogProperties import androidx.compose.ui.window.DialogProperties
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Cancel
import mihon.icons.materialsymbols.rounded.Error
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -57,10 +57,10 @@ fun EditTextPreferenceWidget(
onValueChange = { textFieldValue = it }, onValueChange = { textFieldValue = it },
trailingIcon = { trailingIcon = {
if (textFieldValue.text.isBlank()) { if (textFieldValue.text.isBlank()) {
Icon(imageVector = Icons.Filled.Error, contentDescription = null) Icon(imageVector = MaterialSymbols.Rounded.Error, contentDescription = null)
} else { } else {
IconButton(onClick = { textFieldValue = TextFieldValue("") }) { IconButton(onClick = { textFieldValue = TextFieldValue("") }) {
Icon(imageVector = Icons.Filled.Cancel, contentDescription = null) Icon(imageVector = MaterialSymbols.Rounded.Cancel, contentDescription = null)
} }
} }
}, },
@@ -3,8 +3,6 @@ package eu.kanade.presentation.more.settings.widget
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Info
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
@@ -13,6 +11,8 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.PreviewLightDark import androidx.compose.ui.tooling.preview.PreviewLightDark
import eu.kanade.presentation.theme.TachiyomiPreviewTheme import eu.kanade.presentation.theme.TachiyomiPreviewTheme
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Info
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.components.material.padding
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -30,7 +30,7 @@ internal fun InfoWidget(text: String) {
verticalArrangement = Arrangement.spacedBy(MaterialTheme.padding.medium), verticalArrangement = Arrangement.spacedBy(MaterialTheme.padding.medium),
) { ) {
Icon( Icon(
imageVector = Icons.Outlined.Info, imageVector = MaterialSymbols.Rounded.Info,
contentDescription = null, contentDescription = null,
) )
Text( Text(
@@ -2,8 +2,6 @@ package eu.kanade.presentation.more.settings.widget
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Preview
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
import androidx.compose.material3.Switch import androidx.compose.material3.Switch
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@@ -11,6 +9,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.tooling.preview.PreviewLightDark import androidx.compose.ui.tooling.preview.PreviewLightDark
import eu.kanade.presentation.theme.TachiyomiPreviewTheme import eu.kanade.presentation.theme.TachiyomiPreviewTheme
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Preview
@Composable @Composable
fun SwitchPreferenceWidget( fun SwitchPreferenceWidget(
@@ -46,7 +46,7 @@ private fun SwitchPreferenceWidgetPreview() {
SwitchPreferenceWidget( SwitchPreferenceWidget(
title = "Text preference with icon", title = "Text preference with icon",
subtitle = "Text preference summary", subtitle = "Text preference summary",
icon = Icons.Filled.Preview, icon = MaterialSymbols.Rounded.Preview,
checked = true, checked = true,
onCheckedChanged = {}, onCheckedChanged = {},
) )
@@ -2,8 +2,6 @@ package eu.kanade.presentation.more.settings.widget
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Preview
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
@@ -14,6 +12,8 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.tooling.preview.PreviewLightDark import androidx.compose.ui.tooling.preview.PreviewLightDark
import eu.kanade.presentation.theme.TachiyomiPreviewTheme import eu.kanade.presentation.theme.TachiyomiPreviewTheme
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Preview
import tachiyomi.presentation.core.util.secondaryItemAlpha import tachiyomi.presentation.core.util.secondaryItemAlpha
@Composable @Composable
@@ -68,7 +68,7 @@ private fun TextPreferenceWidgetPreview() {
TextPreferenceWidget( TextPreferenceWidget(
title = "Text preference with icon", title = "Text preference with icon",
subtitle = "Text preference summary", subtitle = "Text preference summary",
icon = Icons.Filled.Preview, icon = MaterialSymbols.Rounded.Preview,
onPreferenceClick = {}, onPreferenceClick = {},
) )
TextPreferenceWidget( TextPreferenceWidget(
@@ -7,8 +7,6 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Done
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
@@ -22,6 +20,8 @@ import androidx.compose.ui.unit.dp
import eu.kanade.presentation.more.settings.LocalPreferenceHighlighted import eu.kanade.presentation.more.settings.LocalPreferenceHighlighted
import eu.kanade.presentation.track.components.TrackLogoIcon import eu.kanade.presentation.track.components.TrackLogoIcon
import eu.kanade.tachiyomi.data.track.Tracker import eu.kanade.tachiyomi.data.track.Tracker
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Done
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -66,7 +66,7 @@ fun TrackingPreferenceWidget(
} }
if (isLoggedIn) { if (isLoggedIn) {
Icon( Icon(
imageVector = Icons.Outlined.Done, imageVector = MaterialSymbols.Rounded.Done,
modifier = Modifier modifier = Modifier
.padding(4.dp) .padding(4.dp)
.size(32.dp), .size(32.dp),
@@ -10,10 +10,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.rounded.CheckBox
import androidx.compose.material.icons.rounded.CheckBoxOutlineBlank
import androidx.compose.material.icons.rounded.DisabledByDefault
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@@ -28,6 +24,10 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.CheckBoxOutlineBlank
import mihon.icons.materialsymbols.roundedfilled.CheckBox
import mihon.icons.materialsymbols.roundedfilled.DisabledByDefault
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -93,9 +93,9 @@ fun <T> TriStateListDialog(
Icon( Icon(
modifier = Modifier.padding(end = 20.dp), modifier = Modifier.padding(end = 20.dp),
imageVector = when (state) { imageVector = when (state) {
State.UNCHECKED -> Icons.Rounded.CheckBoxOutlineBlank State.UNCHECKED -> MaterialSymbols.Rounded.CheckBoxOutlineBlank
State.CHECKED -> Icons.Rounded.CheckBox State.CHECKED -> MaterialSymbols.RoundedFilled.CheckBox
State.INVERSED -> Icons.Rounded.DisabledByDefault State.INVERSED -> MaterialSymbols.RoundedFilled.DisabledByDefault
}, },
tint = if (state == State.UNCHECKED) { tint = if (state == State.UNCHECKED) {
LocalContentColor.current LocalContentColor.current
@@ -7,10 +7,6 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyItemScope import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.CollectionsBookmark
import androidx.compose.material.icons.outlined.LocalLibrary
import androidx.compose.material.icons.outlined.Schedule
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
@@ -20,6 +16,10 @@ import eu.kanade.presentation.more.stats.components.StatsItem
import eu.kanade.presentation.more.stats.components.StatsOverviewItem import eu.kanade.presentation.more.stats.components.StatsOverviewItem
import eu.kanade.presentation.more.stats.data.StatsData import eu.kanade.presentation.more.stats.data.StatsData
import eu.kanade.presentation.util.toDurationString import eu.kanade.presentation.util.toDurationString
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.CollectionsBookmark
import mihon.icons.materialsymbols.rounded.LocalLibrary
import mihon.icons.materialsymbols.rounded.Schedule
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.SectionCard import tachiyomi.presentation.core.components.SectionCard
import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.components.material.padding
@@ -70,17 +70,17 @@ private fun LazyItemScope.OverviewSection(
StatsOverviewItem( StatsOverviewItem(
title = data.libraryMangaCount.toString(), title = data.libraryMangaCount.toString(),
subtitle = stringResource(MR.strings.in_library), subtitle = stringResource(MR.strings.in_library),
icon = Icons.Outlined.CollectionsBookmark, icon = MaterialSymbols.Rounded.CollectionsBookmark,
) )
StatsOverviewItem( StatsOverviewItem(
title = readDurationString, title = readDurationString,
subtitle = stringResource(MR.strings.label_read_duration), subtitle = stringResource(MR.strings.label_read_duration),
icon = Icons.Outlined.Schedule, icon = MaterialSymbols.Rounded.Schedule,
) )
StatsOverviewItem( StatsOverviewItem(
title = data.completedMangaCount.toString(), title = data.completedMangaCount.toString(),
subtitle = stringResource(MR.strings.label_completed_titles), subtitle = stringResource(MR.strings.label_completed_titles),
icon = Icons.Outlined.LocalLibrary, icon = MaterialSymbols.Rounded.LocalLibrary,
) )
} }
} }
@@ -10,10 +10,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.text.InlineTextContent import androidx.compose.foundation.text.InlineTextContent
import androidx.compose.foundation.text.appendInlineContent import androidx.compose.foundation.text.appendInlineContent
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.CheckCircle
import androidx.compose.material.icons.outlined.Info
import androidx.compose.material.icons.outlined.Warning
import androidx.compose.material3.CardColors import androidx.compose.material3.CardColors
import androidx.compose.material3.CardDefaults import androidx.compose.material3.CardDefaults
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@@ -37,6 +33,10 @@ import eu.kanade.presentation.theme.TachiyomiPreviewTheme
import eu.kanade.tachiyomi.data.database.models.toDomainChapter import eu.kanade.tachiyomi.data.database.models.toDomainChapter
import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Info
import mihon.icons.materialsymbols.rounded.Warning
import mihon.icons.materialsymbols.roundedfilled.CheckCircle
import tachiyomi.domain.chapter.model.Chapter import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.chapter.service.calculateChapterGap import tachiyomi.domain.chapter.service.calculateChapterGap
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
@@ -156,7 +156,7 @@ private fun NoChapterNotification(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Icon( Icon(
imageVector = Icons.Outlined.Info, imageVector = MaterialSymbols.Rounded.Info,
tint = MaterialTheme.colorScheme.primary, tint = MaterialTheme.colorScheme.primary,
contentDescription = null, contentDescription = null,
) )
@@ -184,7 +184,7 @@ private fun ChapterGapWarning(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Icon( Icon(
imageVector = Icons.Outlined.Warning, imageVector = MaterialSymbols.Rounded.Warning,
tint = MaterialTheme.colorScheme.error, tint = MaterialTheme.colorScheme.error,
contentDescription = null, contentDescription = null,
) )
@@ -243,7 +243,7 @@ private fun ChapterText(
), ),
) { ) {
Icon( Icon(
imageVector = Icons.Filled.CheckCircle, imageVector = MaterialSymbols.RoundedFilled.CheckCircle,
contentDescription = stringResource(MR.strings.label_downloaded), contentDescription = stringResource(MR.strings.label_downloaded),
) )
}, },
@@ -3,11 +3,6 @@ package eu.kanade.presentation.reader
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.ContentCopy
import androidx.compose.material.icons.outlined.Photo
import androidx.compose.material.icons.outlined.Save
import androidx.compose.material.icons.outlined.Share
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
@@ -20,6 +15,11 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import eu.kanade.presentation.components.AdaptiveSheet import eu.kanade.presentation.components.AdaptiveSheet
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.ContentCopy
import mihon.icons.materialsymbols.rounded.Photo
import mihon.icons.materialsymbols.rounded.Save
import mihon.icons.materialsymbols.rounded.Share
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.ActionButton import tachiyomi.presentation.core.components.ActionButton
import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.components.material.padding
@@ -42,13 +42,13 @@ fun ReaderPageActionsDialog(
ActionButton( ActionButton(
modifier = Modifier.weight(1f), modifier = Modifier.weight(1f),
title = stringResource(MR.strings.set_as_cover), title = stringResource(MR.strings.set_as_cover),
icon = Icons.Outlined.Photo, icon = MaterialSymbols.Rounded.Photo,
onClick = { showSetCoverDialog = true }, onClick = { showSetCoverDialog = true },
) )
ActionButton( ActionButton(
modifier = Modifier.weight(1f), modifier = Modifier.weight(1f),
title = stringResource(MR.strings.action_copy_to_clipboard), title = stringResource(MR.strings.action_copy_to_clipboard),
icon = Icons.Outlined.ContentCopy, icon = MaterialSymbols.Rounded.ContentCopy,
onClick = { onClick = {
onShare(true) onShare(true)
onDismissRequest() onDismissRequest()
@@ -57,7 +57,7 @@ fun ReaderPageActionsDialog(
ActionButton( ActionButton(
modifier = Modifier.weight(1f), modifier = Modifier.weight(1f),
title = stringResource(MR.strings.action_share), title = stringResource(MR.strings.action_share),
icon = Icons.Outlined.Share, icon = MaterialSymbols.Rounded.Share,
onClick = { onClick = {
onShare(false) onShare(false)
onDismissRequest() onDismissRequest()
@@ -66,7 +66,7 @@ fun ReaderPageActionsDialog(
ActionButton( ActionButton(
modifier = Modifier.weight(1f), modifier = Modifier.weight(1f),
title = stringResource(MR.strings.action_save), title = stringResource(MR.strings.action_save),
icon = Icons.Outlined.Save, icon = MaterialSymbols.Rounded.Save,
onClick = { onClick = {
onSave() onSave()
onDismissRequest() onDismissRequest()
@@ -2,8 +2,6 @@ package eu.kanade.presentation.reader.appbars
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Settings
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@@ -14,6 +12,8 @@ import androidx.compose.ui.res.painterResource
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation
import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Settings
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -57,7 +57,7 @@ fun ReaderBottomBar(
IconButton(onClick = onClickSettings) { IconButton(onClick = onClickSettings) {
Icon( Icon(
imageVector = Icons.Outlined.Settings, imageVector = MaterialSymbols.Rounded.Settings,
contentDescription = stringResource(MR.strings.action_settings), contentDescription = stringResource(MR.strings.action_settings),
) )
} }
@@ -1,13 +1,13 @@
package eu.kanade.presentation.reader.appbars package eu.kanade.presentation.reader.appbars
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Bookmark
import androidx.compose.material.icons.outlined.BookmarkBorder
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.AppBar
import eu.kanade.presentation.components.AppBarActions import eu.kanade.presentation.components.AppBarActions
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Bookmark
import mihon.icons.materialsymbols.roundedfilled.Bookmark
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -42,9 +42,9 @@ fun ReaderTopBar(
}, },
), ),
icon = if (bookmarked) { icon = if (bookmarked) {
Icons.Outlined.Bookmark MaterialSymbols.RoundedFilled.Bookmark
} else { } else {
Icons.Outlined.BookmarkBorder MaterialSymbols.Rounded.Bookmark
}, },
onClick = onToggleBookmarked, onClick = onToggleBookmarked,
), ),
@@ -12,9 +12,6 @@ import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.SkipNext
import androidx.compose.material.icons.outlined.SkipPrevious
import androidx.compose.material3.FilledIconButton import androidx.compose.material3.FilledIconButton
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButtonColors import androidx.compose.material3.IconButtonColors
@@ -46,6 +43,9 @@ import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import eu.kanade.presentation.theme.TachiyomiPreviewTheme import eu.kanade.presentation.theme.TachiyomiPreviewTheme
import eu.kanade.presentation.util.isTabletUi import eu.kanade.presentation.util.isTabletUi
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.SkipNext
import mihon.icons.materialsymbols.rounded.SkipPrevious
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
import kotlin.math.roundToInt import kotlin.math.roundToInt
@@ -172,7 +172,7 @@ fun HorizontalChapterNavigator(
colors = buttonColor, colors = buttonColor,
) { ) {
Icon( Icon(
imageVector = Icons.Outlined.SkipPrevious, imageVector = MaterialSymbols.Rounded.SkipPrevious,
contentDescription = stringResource( contentDescription = stringResource(
if (isRtl) MR.strings.action_next_chapter else MR.strings.action_previous_chapter, if (isRtl) MR.strings.action_next_chapter else MR.strings.action_previous_chapter,
), ),
@@ -216,7 +216,7 @@ fun HorizontalChapterNavigator(
colors = buttonColor, colors = buttonColor,
) { ) {
Icon( Icon(
imageVector = Icons.Outlined.SkipNext, imageVector = MaterialSymbols.Rounded.SkipNext,
contentDescription = stringResource( contentDescription = stringResource(
if (isRtl) MR.strings.action_previous_chapter else MR.strings.action_next_chapter, if (isRtl) MR.strings.action_previous_chapter else MR.strings.action_next_chapter,
), ),
@@ -253,7 +253,7 @@ fun VerticalChapterNavigator(
colors = buttonColor, colors = buttonColor,
) { ) {
Icon( Icon(
imageVector = Icons.Outlined.SkipPrevious, imageVector = MaterialSymbols.Rounded.SkipPrevious,
contentDescription = stringResource(MR.strings.action_previous_chapter), contentDescription = stringResource(MR.strings.action_previous_chapter),
modifier = Modifier.rotate(90f), modifier = Modifier.rotate(90f),
) )
@@ -290,7 +290,7 @@ fun VerticalChapterNavigator(
colors = buttonColor, colors = buttonColor,
) { ) {
Icon( Icon(
imageVector = Icons.Outlined.SkipNext, imageVector = MaterialSymbols.Rounded.SkipNext,
contentDescription = stringResource(MR.strings.action_next_chapter), contentDescription = stringResource(MR.strings.action_next_chapter),
modifier = Modifier.rotate(90f), modifier = Modifier.rotate(90f),
) )
@@ -6,8 +6,6 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Check
import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.FilledTonalButton
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -20,6 +18,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.PreviewLightDark import androidx.compose.ui.tooling.preview.PreviewLightDark
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import eu.kanade.presentation.theme.TachiyomiPreviewTheme import eu.kanade.presentation.theme.TachiyomiPreviewTheme
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Check
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.SettingsItemsPaddings import tachiyomi.presentation.core.components.SettingsItemsPaddings
import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.components.material.padding
@@ -56,7 +56,7 @@ fun ModeSelectionDialog(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Icon( Icon(
imageVector = Icons.Outlined.Check, imageVector = MaterialSymbols.Rounded.Check,
contentDescription = null, contentDescription = null,
) )
Text(text = stringResource(MR.strings.action_apply)) Text(text = stringResource(MR.strings.action_apply))
@@ -22,9 +22,6 @@ import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.MoreVert
import androidx.compose.material.icons.filled.VisibilityOff
import androidx.compose.material3.Badge import androidx.compose.material3.Badge
import androidx.compose.material3.BadgedBox import androidx.compose.material3.BadgedBox
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
@@ -60,6 +57,9 @@ import eu.kanade.tachiyomi.util.lang.toJavaLocalDate
import eu.kanade.tachiyomi.util.lang.toLocalDate import eu.kanade.tachiyomi.util.lang.toLocalDate
import eu.kanade.tachiyomi.util.system.copyToClipboard import eu.kanade.tachiyomi.util.system.copyToClipboard
import kotlinx.datetime.toJavaLocalDate import kotlinx.datetime.toJavaLocalDate
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.MoreVert
import mihon.icons.materialsymbols.rounded.VisibilityOff
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
import java.time.format.DateTimeFormatter import java.time.format.DateTimeFormatter
@@ -175,7 +175,7 @@ private fun TrackInfoItem(
modifier = Modifier.absoluteOffset(x = (-5).dp), modifier = Modifier.absoluteOffset(x = (-5).dp),
) { ) {
Icon( Icon(
imageVector = Icons.Filled.VisibilityOff, imageVector = MaterialSymbols.Rounded.VisibilityOff,
contentDescription = stringResource(MR.strings.tracked_privately), contentDescription = stringResource(MR.strings.tracked_privately),
modifier = Modifier.size(14.dp), modifier = Modifier.size(14.dp),
) )
@@ -334,7 +334,7 @@ private fun TrackInfoItemMenu(
Box(modifier = Modifier.wrapContentSize(Alignment.TopStart)) { Box(modifier = Modifier.wrapContentSize(Alignment.TopStart)) {
IconButton(onClick = { expanded = true }) { IconButton(onClick = { expanded = true }) {
Icon( Icon(
imageVector = Icons.Default.MoreVert, imageVector = MaterialSymbols.Rounded.MoreVert,
contentDescription = stringResource(MR.strings.label_more), contentDescription = stringResource(MR.strings.label_more),
) )
} }
@@ -30,11 +30,6 @@ import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.text.input.TextFieldLineLimits import androidx.compose.foundation.text.input.TextFieldLineLimits
import androidx.compose.foundation.text.input.TextFieldState import androidx.compose.foundation.text.input.TextFieldState
import androidx.compose.foundation.text.input.clearText import androidx.compose.foundation.text.input.clearText
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.ArrowBack
import androidx.compose.material.icons.filled.CheckCircle
import androidx.compose.material.icons.filled.Close
import androidx.compose.material.icons.filled.VisibilityOff
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
@@ -76,6 +71,11 @@ import eu.kanade.presentation.theme.TachiyomiPreviewTheme
import eu.kanade.tachiyomi.data.track.model.TrackSearch import eu.kanade.tachiyomi.data.track.model.TrackSearch
import eu.kanade.tachiyomi.util.system.openInBrowser import eu.kanade.tachiyomi.util.system.openInBrowser
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ArrowBack
import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.VisibilityOff
import mihon.icons.materialsymbols.roundedfilled.CheckCircle
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.ScrollbarLazyColumn import tachiyomi.presentation.core.components.ScrollbarLazyColumn
import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.components.material.Scaffold
@@ -112,7 +112,7 @@ fun TrackerSearch(
navigationIcon = { navigationIcon = {
IconButton(onClick = onDismissRequest) { IconButton(onClick = onDismissRequest) {
Icon( Icon(
imageVector = Icons.AutoMirrored.Outlined.ArrowBack, imageVector = MaterialSymbols.AutoMirroredRounded.ArrowBack,
contentDescription = null, contentDescription = null,
tint = MaterialTheme.colorScheme.onSurfaceVariant, tint = MaterialTheme.colorScheme.onSurfaceVariant,
) )
@@ -152,7 +152,7 @@ fun TrackerSearch(
}, },
) { ) {
Icon( Icon(
imageVector = Icons.Default.Close, imageVector = MaterialSymbols.Rounded.Close,
contentDescription = null, contentDescription = null,
tint = MaterialTheme.colorScheme.onSurfaceVariant, tint = MaterialTheme.colorScheme.onSurfaceVariant,
) )
@@ -189,7 +189,7 @@ fun TrackerSearch(
elevation = ButtonDefaults.elevatedButtonElevation(), elevation = ButtonDefaults.elevatedButtonElevation(),
) { ) {
Icon( Icon(
imageVector = Icons.Filled.VisibilityOff, imageVector = MaterialSymbols.Rounded.VisibilityOff,
contentDescription = stringResource(MR.strings.action_toggle_private_on), contentDescription = stringResource(MR.strings.action_toggle_private_on),
) )
} }
@@ -274,7 +274,7 @@ private fun SearchResultItem(
) { ) {
if (selected) { if (selected) {
Icon( Icon(
imageVector = Icons.Filled.CheckCircle, imageVector = MaterialSymbols.RoundedFilled.CheckCircle,
contentDescription = null, contentDescription = null,
modifier = Modifier.align(Alignment.TopEnd), modifier = Modifier.align(Alignment.TopEnd),
tint = MaterialTheme.colorScheme.primary, tint = MaterialTheme.colorScheme.primary,
@@ -3,12 +3,6 @@ package eu.kanade.presentation.updates
import androidx.activity.compose.BackHandler import androidx.activity.compose.BackHandler
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.CalendarMonth
import androidx.compose.material.icons.outlined.FilterList
import androidx.compose.material.icons.outlined.FlipToBack
import androidx.compose.material.icons.outlined.Refresh
import androidx.compose.material.icons.outlined.SelectAll
import androidx.compose.material3.LocalContentColor import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHost
@@ -33,6 +27,12 @@ import eu.kanade.tachiyomi.ui.updates.UpdatesViewModel
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.datetime.LocalDate import kotlinx.datetime.LocalDate
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.CalendarMonth
import mihon.icons.materialsymbols.rounded.FilterList
import mihon.icons.materialsymbols.rounded.FlipToBack
import mihon.icons.materialsymbols.rounded.Refresh
import mihon.icons.materialsymbols.rounded.SelectAll
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.FastScrollLazyColumn import tachiyomi.presentation.core.components.FastScrollLazyColumn
import tachiyomi.presentation.core.components.material.PullRefresh import tachiyomi.presentation.core.components.material.PullRefresh
@@ -158,18 +158,18 @@ private fun UpdatesAppBar(
listOf( listOf(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_filter), title = stringResource(MR.strings.action_filter),
icon = Icons.Outlined.FilterList, icon = MaterialSymbols.Rounded.FilterList,
iconTint = if (hasFilters) MaterialTheme.colorScheme.active else LocalContentColor.current, iconTint = if (hasFilters) MaterialTheme.colorScheme.active else LocalContentColor.current,
onClick = onFilterClicked, onClick = onFilterClicked,
), ),
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_view_upcoming), title = stringResource(MR.strings.action_view_upcoming),
icon = Icons.Outlined.CalendarMonth, icon = MaterialSymbols.Rounded.CalendarMonth,
onClick = onCalendarClicked, onClick = onCalendarClicked,
), ),
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_update_library), title = stringResource(MR.strings.action_update_library),
icon = Icons.Outlined.Refresh, icon = MaterialSymbols.Rounded.Refresh,
onClick = onUpdateLibrary, onClick = onUpdateLibrary,
), ),
), ),
@@ -182,12 +182,12 @@ private fun UpdatesAppBar(
listOf( listOf(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_select_all), title = stringResource(MR.strings.action_select_all),
icon = Icons.Outlined.SelectAll, icon = MaterialSymbols.Rounded.SelectAll,
onClick = onSelectAll, onClick = onSelectAll,
), ),
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_select_inverse), title = stringResource(MR.strings.action_select_inverse),
icon = Icons.Outlined.FlipToBack, icon = MaterialSymbols.Rounded.FlipToBack,
onClick = onInvertSelection, onClick = onInvertSelection,
), ),
), ),
@@ -12,9 +12,6 @@ import androidx.compose.foundation.layout.sizeIn
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Bookmark
import androidx.compose.material.icons.filled.Circle
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.LocalContentColor import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -40,6 +37,9 @@ import eu.kanade.presentation.manga.components.MangaCover
import eu.kanade.presentation.util.relativeTimeSpanString import eu.kanade.presentation.util.relativeTimeSpanString
import eu.kanade.tachiyomi.data.download.model.Download import eu.kanade.tachiyomi.data.download.model.Download
import eu.kanade.tachiyomi.ui.updates.UpdatesItem import eu.kanade.tachiyomi.ui.updates.UpdatesItem
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.roundedfilled.Bookmark
import mihon.icons.materialsymbols.roundedfilled.Circle
import tachiyomi.domain.updates.model.UpdatesWithRelations import tachiyomi.domain.updates.model.UpdatesWithRelations
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.ListGroupHeader import tachiyomi.presentation.core.components.ListGroupHeader
@@ -186,7 +186,7 @@ private fun UpdatesUiItem(
var textHeight by remember { mutableIntStateOf(0) } var textHeight by remember { mutableIntStateOf(0) }
if (!update.read) { if (!update.read) {
Icon( Icon(
imageVector = Icons.Filled.Circle, imageVector = MaterialSymbols.RoundedFilled.Circle,
contentDescription = stringResource(MR.strings.unread), contentDescription = stringResource(MR.strings.unread),
modifier = Modifier modifier = Modifier
.height(8.dp) .height(8.dp)
@@ -196,7 +196,7 @@ private fun UpdatesUiItem(
} }
if (update.bookmark) { if (update.bookmark) {
Icon( Icon(
imageVector = Icons.Filled.Bookmark, imageVector = MaterialSymbols.RoundedFilled.Bookmark,
contentDescription = stringResource(MR.strings.action_filter_bookmarked), contentDescription = stringResource(MR.strings.action_filter_bookmarked),
modifier = Modifier modifier = Modifier
.sizeIn(maxHeight = with(LocalDensity.current) { textHeight.toDp() - 2.dp }), .sizeIn(maxHeight = with(LocalDensity.current) { textHeight.toDp() - 2.dp }),
@@ -14,10 +14,6 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.ArrowBack
import androidx.compose.material.icons.automirrored.outlined.ArrowForward
import androidx.compose.material.icons.outlined.Close
import androidx.compose.material3.LinearProgressIndicator import androidx.compose.material3.LinearProgressIndicator
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
@@ -53,6 +49,10 @@ import eu.kanade.tachiyomi.util.system.getHtml
import eu.kanade.tachiyomi.util.system.setDefaultSettings import eu.kanade.tachiyomi.util.system.setDefaultSettings
import eu.kanade.tachiyomi.util.system.setUserAgent import eu.kanade.tachiyomi.util.system.setUserAgent
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ArrowBack
import mihon.icons.materialsymbols.automirroredrounded.ArrowForward
import mihon.icons.materialsymbols.rounded.Close
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.components.material.Scaffold
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -232,13 +232,13 @@ fun WebViewScreenContent(
title = currentWindow.state.pageTitle ?: initialTitle, title = currentWindow.state.pageTitle ?: initialTitle,
subtitle = currentUrl, subtitle = currentUrl,
navigateUp = onNavigateUp, navigateUp = onNavigateUp,
navigationIcon = Icons.Outlined.Close, navigationIcon = MaterialSymbols.Rounded.Close,
actions = { actions = {
AppBarActions( AppBarActions(
listOf( listOf(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_webview_back), title = stringResource(MR.strings.action_webview_back),
icon = Icons.AutoMirrored.Outlined.ArrowBack, icon = MaterialSymbols.AutoMirroredRounded.ArrowBack,
onClick = { onClick = {
if (navigator.canGoBack) { if (navigator.canGoBack) {
navigator.navigateBack() navigator.navigateBack()
@@ -248,7 +248,7 @@ fun WebViewScreenContent(
), ),
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_webview_forward), title = stringResource(MR.strings.action_webview_forward),
icon = Icons.AutoMirrored.Outlined.ArrowForward, icon = MaterialSymbols.AutoMirroredRounded.ArrowForward,
onClick = { onClick = {
if (navigator.canGoForward) { if (navigator.canGoForward) {
navigator.navigateForward() navigator.navigateForward()
@@ -6,8 +6,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.ArrowForward
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.SmallExtendedFloatingActionButton import androidx.compose.material3.SmallExtendedFloatingActionButton
import androidx.compose.material3.Text import androidx.compose.material3.Text
@@ -30,6 +28,8 @@ import eu.kanade.tachiyomi.ui.manga.MangaScreen
import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.util.system.toast
import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.collectLatest
import mihon.feature.migration.config.MigrationConfigScreen import mihon.feature.migration.config.MigrationConfigScreen
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ArrowForward
import tachiyomi.domain.manga.model.Manga import tachiyomi.domain.manga.model.Manga
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.FastScrollLazyColumn import tachiyomi.presentation.core.components.FastScrollLazyColumn
@@ -82,7 +82,7 @@ data class MigrateMangaScreen(
SmallExtendedFloatingActionButton( SmallExtendedFloatingActionButton(
text = { Text(text = stringResource(MR.strings.migrationConfigScreen_continueButtonText)) }, text = { Text(text = stringResource(MR.strings.migrationConfigScreen_continueButtonText)) },
icon = { icon = {
Icon(imageVector = Icons.AutoMirrored.Outlined.ArrowForward, contentDescription = null) Icon(imageVector = MaterialSymbols.AutoMirroredRounded.ArrowForward, contentDescription = null)
}, },
onClick = { onClick = {
val selection = state.selection val selection = state.selection
@@ -1,7 +1,5 @@
package eu.kanade.tachiyomi.ui.browse.migration.search package eu.kanade.tachiyomi.ui.browse.migration.search
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.FilterList
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.SmallExtendedFloatingActionButton import androidx.compose.material3.SmallExtendedFloatingActionButton
import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHost
@@ -32,6 +30,8 @@ import eu.kanade.tachiyomi.ui.webview.WebViewScreen
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import mihon.feature.migration.dialog.MigrateMangaDialog import mihon.feature.migration.dialog.MigrateMangaDialog
import mihon.feature.migration.list.MigrationListScreen import mihon.feature.migration.list.MigrationListScreen
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.FilterList
import mihon.presentation.core.util.collectAsLazyPagingItems import mihon.presentation.core.util.collectAsLazyPagingItems
import tachiyomi.core.common.Constants import tachiyomi.core.common.Constants
import tachiyomi.domain.manga.model.Manga import tachiyomi.domain.manga.model.Manga
@@ -80,7 +80,7 @@ data class MigrateSourceSearchScreen(
floatingActionButton = { floatingActionButton = {
SmallExtendedFloatingActionButton( SmallExtendedFloatingActionButton(
text = { Text(text = stringResource(MR.strings.action_filter)) }, text = { Text(text = stringResource(MR.strings.action_filter)) },
icon = { Icon(Icons.Outlined.FilterList, contentDescription = null) }, icon = { Icon(MaterialSymbols.Rounded.FilterList, contentDescription = null) },
onClick = viewModel::openFilterSheet, onClick = viewModel::openFilterSheet,
modifier = Modifier.animateFloatingActionButton( modifier = Modifier.animateFloatingActionButton(
visible = state.filters.isNotEmpty(), visible = state.filters.isNotEmpty(),
@@ -1,7 +1,5 @@
package eu.kanade.tachiyomi.ui.browse.migration.sources package eu.kanade.tachiyomi.ui.browse.migration.sources
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.HelpOutline
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.platform.LocalUriHandler
@@ -15,6 +13,8 @@ import eu.kanade.presentation.browse.MigrateSourceScreen
import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.AppBar
import eu.kanade.presentation.components.TabContent import eu.kanade.presentation.components.TabContent
import eu.kanade.tachiyomi.ui.browse.migration.manga.MigrateMangaScreen import eu.kanade.tachiyomi.ui.browse.migration.manga.MigrateMangaScreen
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.Help
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -30,7 +30,7 @@ fun Screen.migrateSourceTab(): TabContent {
actions = listOf( actions = listOf(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.migration_help_guide), title = stringResource(MR.strings.migration_help_guide),
icon = Icons.AutoMirrored.Outlined.HelpOutline, icon = MaterialSymbols.AutoMirroredRounded.Help,
onClick = { onClick = {
uriHandler.openUri("https://mihon.app/docs/guides/source-migration") uriHandler.openUri("https://mihon.app/docs/guides/source-migration")
}, },
@@ -1,8 +1,5 @@
package eu.kanade.tachiyomi.ui.browse.source package eu.kanade.tachiyomi.ui.browse.source
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.FilterList
import androidx.compose.material.icons.outlined.TravelExplore
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
@@ -20,6 +17,9 @@ import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreen
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchScreen import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchScreen
import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.FilterList
import mihon.icons.materialsymbols.rounded.TravelExplore
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -34,12 +34,12 @@ fun Screen.sourcesTab(): TabContent {
actions = listOf( actions = listOf(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_global_search), title = stringResource(MR.strings.action_global_search),
icon = Icons.Outlined.TravelExplore, icon = MaterialSymbols.Rounded.TravelExplore,
onClick = { navigator.push(GlobalSearchScreen()) }, onClick = { navigator.push(GlobalSearchScreen()) },
), ),
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_filter), title = stringResource(MR.strings.action_filter),
icon = Icons.Outlined.FilterList, icon = MaterialSymbols.Rounded.FilterList,
onClick = { navigator.push(SourcesFilterScreen()) }, onClick = { navigator.push(SourcesFilterScreen()) },
), ),
), ),
@@ -8,10 +8,6 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Favorite
import androidx.compose.material.icons.outlined.FilterList
import androidx.compose.material.icons.outlined.NewReleases
import androidx.compose.material3.FilterChip import androidx.compose.material3.FilterChip
import androidx.compose.material3.FilterChipDefaults import androidx.compose.material3.FilterChipDefaults
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
@@ -53,6 +49,10 @@ import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.receiveAsFlow import kotlinx.coroutines.flow.receiveAsFlow
import mihon.feature.migration.dialog.MigrateMangaDialog import mihon.feature.migration.dialog.MigrateMangaDialog
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.FilterList
import mihon.icons.materialsymbols.rounded.NewReleases
import mihon.icons.materialsymbols.roundedfilled.Favorite
import mihon.presentation.core.util.collectAsLazyPagingItems import mihon.presentation.core.util.collectAsLazyPagingItems
import tachiyomi.core.common.Constants import tachiyomi.core.common.Constants
import tachiyomi.core.common.util.lang.launchIO import tachiyomi.core.common.util.lang.launchIO
@@ -158,7 +158,7 @@ data class BrowseSourceScreen(
}, },
leadingIcon = { leadingIcon = {
Icon( Icon(
imageVector = Icons.Outlined.Favorite, imageVector = MaterialSymbols.RoundedFilled.Favorite,
contentDescription = null, contentDescription = null,
modifier = Modifier modifier = Modifier
.size(FilterChipDefaults.IconSize), .size(FilterChipDefaults.IconSize),
@@ -177,7 +177,7 @@ data class BrowseSourceScreen(
}, },
leadingIcon = { leadingIcon = {
Icon( Icon(
imageVector = Icons.Outlined.NewReleases, imageVector = MaterialSymbols.Rounded.NewReleases,
contentDescription = null, contentDescription = null,
modifier = Modifier modifier = Modifier
.size(FilterChipDefaults.IconSize), .size(FilterChipDefaults.IconSize),
@@ -194,7 +194,7 @@ data class BrowseSourceScreen(
onClick = viewModel::openFilterSheet, onClick = viewModel::openFilterSheet,
leadingIcon = { leadingIcon = {
Icon( Icon(
imageVector = Icons.Outlined.FilterList, imageVector = MaterialSymbols.Rounded.FilterList,
contentDescription = null, contentDescription = null,
modifier = Modifier modifier = Modifier
.size(FilterChipDefaults.IconSize), .size(FilterChipDefaults.IconSize),
@@ -6,10 +6,6 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.Sort
import androidx.compose.material.icons.filled.PlayArrow
import androidx.compose.material.icons.outlined.Pause
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -52,6 +48,10 @@ import eu.kanade.presentation.components.DropdownMenu
import eu.kanade.presentation.components.NestedMenuItem import eu.kanade.presentation.components.NestedMenuItem
import eu.kanade.presentation.util.Screen import eu.kanade.presentation.util.Screen
import eu.kanade.tachiyomi.databinding.DownloadListBinding import eu.kanade.tachiyomi.databinding.DownloadListBinding
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.Sort
import mihon.icons.materialsymbols.roundedfilled.Pause
import mihon.icons.materialsymbols.roundedfilled.PlayArrow
import tachiyomi.core.common.util.lang.launchUI import tachiyomi.core.common.util.lang.launchUI
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.Pill import tachiyomi.presentation.core.components.Pill
@@ -184,7 +184,7 @@ object DownloadQueueScreen : Screen() {
listOf( listOf(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_sort), title = stringResource(MR.strings.action_sort),
icon = Icons.AutoMirrored.Outlined.Sort, icon = MaterialSymbols.AutoMirroredRounded.Sort,
onClick = { sortExpanded = true }, onClick = { sortExpanded = true },
), ),
AppBar.OverflowAction( AppBar.OverflowAction(
@@ -211,9 +211,9 @@ object DownloadQueueScreen : Screen() {
}, },
icon = { icon = {
val icon = if (isRunning) { val icon = if (isRunning) {
Icons.Outlined.Pause MaterialSymbols.RoundedFilled.Pause
} else { } else {
Icons.Filled.PlayArrow MaterialSymbols.RoundedFilled.PlayArrow
} }
Icon(imageVector = icon, contentDescription = null) Icon(imageVector = icon, contentDescription = null)
}, },
@@ -5,8 +5,6 @@ import androidx.compose.animation.graphics.res.animatedVectorResource
import androidx.compose.animation.graphics.res.rememberAnimatedVectorPainter import androidx.compose.animation.graphics.res.rememberAnimatedVectorPainter
import androidx.compose.animation.graphics.vector.AnimatedImageVector import androidx.compose.animation.graphics.vector.AnimatedImageVector
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.HelpOutline
import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SnackbarHostState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@@ -50,6 +48,8 @@ import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.receiveAsFlow import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import mihon.feature.migration.config.MigrationConfigScreen import mihon.feature.migration.config.MigrationConfigScreen
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.Help
import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.common.i18n.stringResource
import tachiyomi.core.common.util.lang.launchIO import tachiyomi.core.common.util.lang.launchIO
import tachiyomi.domain.category.model.Category import tachiyomi.domain.category.model.Category
@@ -172,7 +172,7 @@ data object LibraryTab : Tab {
actions = listOf( actions = listOf(
EmptyScreenAction( EmptyScreenAction(
stringRes = MR.strings.getting_started_guide, stringRes = MR.strings.getting_started_guide,
icon = Icons.AutoMirrored.Outlined.HelpOutline, icon = MaterialSymbols.AutoMirroredRounded.Help,
onClick = { handler.openUri(GETTING_STARTED_URL) }, onClick = { handler.openUri(GETTING_STARTED_URL) },
), ),
), ),
@@ -32,9 +32,6 @@ import androidx.compose.foundation.layout.windowInsetsBottomHeight
import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.OpenInNew
import androidx.compose.material.icons.filled.VolunteerActivism
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@@ -111,6 +108,9 @@ import mihon.app.di.appGraph
import mihon.core.metro.metroGraph import mihon.core.metro.metroGraph
import mihon.core.migration.Migrator import mihon.core.migration.Migrator
import mihon.feature.support.SupportUsScreen import mihon.feature.support.SupportUsScreen
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.OpenInNew
import mihon.icons.materialsymbols.rounded.VolunteerActivism
import tachiyomi.core.common.Constants import tachiyomi.core.common.Constants
import tachiyomi.core.common.util.lang.launchIO import tachiyomi.core.common.util.lang.launchIO
import tachiyomi.core.common.util.system.logcat import tachiyomi.core.common.util.system.logcat
@@ -418,7 +418,7 @@ class MainActivity : BaseActivity() {
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.padding.small), horizontalArrangement = Arrangement.spacedBy(MaterialTheme.padding.small),
) { ) {
Icon( Icon(
imageVector = Icons.Default.VolunteerActivism, imageVector = MaterialSymbols.Rounded.VolunteerActivism,
contentDescription = null, contentDescription = null,
) )
Text( Text(
@@ -447,7 +447,7 @@ class MainActivity : BaseActivity() {
text = stringResource(MR.strings.donationCampaign_contactPlatform), text = stringResource(MR.strings.donationCampaign_contactPlatform),
) )
Icon( Icon(
imageVector = Icons.AutoMirrored.Default.OpenInNew, imageVector = MaterialSymbols.AutoMirroredRounded.OpenInNew,
contentDescription = null, contentDescription = null,
) )
} }
@@ -9,8 +9,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.systemBars import androidx.compose.foundation.layout.systemBars
import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.foundation.text.input.rememberTextFieldState import androidx.compose.foundation.text.input.rememberTextFieldState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Delete
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.FilledTonalButton
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@@ -73,6 +71,8 @@ import kotlinx.datetime.TimeZone
import kotlinx.datetime.toLocalDateTime import kotlinx.datetime.toLocalDateTime
import logcat.LogPriority import logcat.LogPriority
import mihon.app.di.appGraph import mihon.app.di.appGraph
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Delete
import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.common.i18n.stringResource
import tachiyomi.core.common.util.lang.launchNonCancellable import tachiyomi.core.common.util.lang.launchNonCancellable
import tachiyomi.core.common.util.lang.withIOContext import tachiyomi.core.common.util.lang.withIOContext
@@ -630,7 +630,7 @@ data class TrackDateRemoverScreen(
modifier = Modifier.windowInsetsPadding(WindowInsets.systemBars), modifier = Modifier.windowInsetsPadding(WindowInsets.systemBars),
icon = { icon = {
Icon( Icon(
imageVector = Icons.Default.Delete, imageVector = MaterialSymbols.Rounded.Delete,
contentDescription = null, contentDescription = null,
) )
}, },
@@ -836,7 +836,7 @@ data class TrackerRemoveScreen(
modifier = Modifier.windowInsetsPadding(WindowInsets.systemBars), modifier = Modifier.windowInsetsPadding(WindowInsets.systemBars),
icon = { icon = {
Icon( Icon(
imageVector = Icons.Default.Delete, imageVector = MaterialSymbols.Rounded.Delete,
contentDescription = null, contentDescription = null,
) )
}, },
@@ -1,14 +1,14 @@
package eu.kanade.tachiyomi.ui.reader.setting package eu.kanade.tachiyomi.ui.reader.setting
import android.content.pm.ActivityInfo import android.content.pm.ActivityInfo
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ScreenLockLandscape
import androidx.compose.material.icons.filled.ScreenLockPortrait
import androidx.compose.material.icons.filled.ScreenRotation
import androidx.compose.material.icons.filled.StayCurrentLandscape
import androidx.compose.material.icons.filled.StayCurrentPortrait
import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector
import dev.icerock.moko.resources.StringResource import dev.icerock.moko.resources.StringResource
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.ScreenLockLandscape
import mihon.icons.materialsymbols.rounded.ScreenLockPortrait
import mihon.icons.materialsymbols.rounded.ScreenRotation
import mihon.icons.materialsymbols.rounded.StayCurrentLandscape
import mihon.icons.materialsymbols.rounded.StayCurrentPortrait
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
enum class ReaderOrientation( enum class ReaderOrientation(
@@ -20,43 +20,43 @@ enum class ReaderOrientation(
DEFAULT( DEFAULT(
ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED,
MR.strings.label_default, MR.strings.label_default,
Icons.Default.ScreenRotation, MaterialSymbols.Rounded.ScreenRotation,
0x00000000, 0x00000000,
), ),
FREE( FREE(
ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED,
MR.strings.rotation_free, MR.strings.rotation_free,
Icons.Default.ScreenRotation, MaterialSymbols.Rounded.ScreenRotation,
0x00000008, 0x00000008,
), ),
PORTRAIT( PORTRAIT(
ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT, ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT,
MR.strings.rotation_portrait, MR.strings.rotation_portrait,
Icons.Default.StayCurrentPortrait, MaterialSymbols.Rounded.StayCurrentPortrait,
0x00000010, 0x00000010,
), ),
LANDSCAPE( LANDSCAPE(
ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE, ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE,
MR.strings.rotation_landscape, MR.strings.rotation_landscape,
Icons.Default.StayCurrentLandscape, MaterialSymbols.Rounded.StayCurrentLandscape,
0x00000018, 0x00000018,
), ),
LOCKED_PORTRAIT( LOCKED_PORTRAIT(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT,
MR.strings.rotation_force_portrait, MR.strings.rotation_force_portrait,
Icons.Default.ScreenLockPortrait, MaterialSymbols.Rounded.ScreenLockPortrait,
0x00000020, 0x00000020,
), ),
LOCKED_LANDSCAPE( LOCKED_LANDSCAPE(
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE, ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE,
MR.strings.rotation_force_landscape, MR.strings.rotation_force_landscape,
Icons.Default.ScreenLockLandscape, MaterialSymbols.Rounded.ScreenLockLandscape,
0x00000028, 0x00000028,
), ),
REVERSE_PORTRAIT( REVERSE_PORTRAIT(
ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT, ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT,
MR.strings.rotation_reverse_portrait, MR.strings.rotation_reverse_portrait,
Icons.Default.StayCurrentPortrait, MaterialSymbols.Rounded.StayCurrentPortrait,
0x00000030, 0x00000030,
), ),
; ;
@@ -9,11 +9,6 @@ import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.ArrowForward
import androidx.compose.material.icons.outlined.Deselect
import androidx.compose.material.icons.outlined.DragHandle
import androidx.compose.material.icons.outlined.SelectAll
import androidx.compose.material3.ElevatedCard import androidx.compose.material3.ElevatedCard
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@@ -58,6 +53,11 @@ import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.update import kotlinx.coroutines.flow.update
import mihon.feature.migration.list.MigrationListScreen import mihon.feature.migration.list.MigrationListScreen
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ArrowForward
import mihon.icons.materialsymbols.rounded.Deselect
import mihon.icons.materialsymbols.rounded.DragHandle
import mihon.icons.materialsymbols.rounded.SelectAll
import sh.calvin.reorderable.ReorderableCollectionItemScope import sh.calvin.reorderable.ReorderableCollectionItemScope
import sh.calvin.reorderable.ReorderableItem import sh.calvin.reorderable.ReorderableItem
import sh.calvin.reorderable.ReorderableLazyListState import sh.calvin.reorderable.ReorderableLazyListState
@@ -125,12 +125,12 @@ class MigrationConfigScreen(private val mangaIds: Collection<Long>) : Screen() {
listOf( listOf(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.migrationConfigScreen_selectAllLabel), title = stringResource(MR.strings.migrationConfigScreen_selectAllLabel),
icon = Icons.Outlined.SelectAll, icon = MaterialSymbols.Rounded.SelectAll,
onClick = { viewModel.toggleSelection(Model.SelectionConfig.All) }, onClick = { viewModel.toggleSelection(Model.SelectionConfig.All) },
), ),
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.migrationConfigScreen_selectNoneLabel), title = stringResource(MR.strings.migrationConfigScreen_selectNoneLabel),
icon = Icons.Outlined.Deselect, icon = MaterialSymbols.Rounded.Deselect,
onClick = { viewModel.toggleSelection(Model.SelectionConfig.None) }, onClick = { viewModel.toggleSelection(Model.SelectionConfig.None) },
), ),
AppBar.OverflowAction( AppBar.OverflowAction(
@@ -149,7 +149,9 @@ class MigrationConfigScreen(private val mangaIds: Collection<Long>) : Screen() {
floatingActionButton = { floatingActionButton = {
SmallExtendedFloatingActionButton( SmallExtendedFloatingActionButton(
text = { Text(text = stringResource(MR.strings.migrationConfigScreen_continueButtonText)) }, text = { Text(text = stringResource(MR.strings.migrationConfigScreen_continueButtonText)) },
icon = { Icon(imageVector = Icons.AutoMirrored.Outlined.ArrowForward, contentDescription = null) }, icon = {
Icon(imageVector = MaterialSymbols.AutoMirroredRounded.ArrowForward, contentDescription = null)
},
onClick = { onClick = {
viewModel.saveSources() viewModel.saveSources()
continueMigration(openSheet = true, extraSearchQuery = null) continueMigration(openSheet = true, extraSearchQuery = null)
@@ -277,7 +279,7 @@ class MigrationConfigScreen(private val mangaIds: Collection<Long>) : Screen() {
trailingContent = if (dragEnabled) { trailingContent = if (dragEnabled) {
{ {
Icon( Icon(
imageVector = Icons.Outlined.DragHandle, imageVector = MaterialSymbols.Rounded.DragHandle,
contentDescription = null, contentDescription = null,
modifier = with(scope) { modifier = with(scope) {
Modifier.draggableHandle() Modifier.draggableHandle()
@@ -10,9 +10,6 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Check
import androidx.compose.material.icons.outlined.Warning
import androidx.compose.material3.FilterChip import androidx.compose.material3.FilterChip
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@@ -35,6 +32,9 @@ import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.presentation.components.AdaptiveSheet import eu.kanade.presentation.components.AdaptiveSheet
import mihon.domain.migration.models.MigrationFlag import mihon.domain.migration.models.MigrationFlag
import mihon.feature.common.utils.getLabel import mihon.feature.common.utils.getLabel
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Check
import mihon.icons.materialsymbols.rounded.Warning
import tachiyomi.core.common.preference.Preference import tachiyomi.core.common.preference.Preference
import tachiyomi.core.common.preference.getAndSet import tachiyomi.core.common.preference.getAndSet
import tachiyomi.core.common.preference.toggle import tachiyomi.core.common.preference.toggle
@@ -98,7 +98,7 @@ fun MigrationConfigScreenSheet(
leadingIcon = { leadingIcon = {
if (selected) { if (selected) {
Icon( Icon(
imageVector = Icons.Outlined.Check, imageVector = MaterialSymbols.Rounded.Check,
contentDescription = null, contentDescription = null,
) )
} }
@@ -226,7 +226,7 @@ private fun MigrationSheetWarningItem(
ListItem( ListItem(
leadingContent = { leadingContent = {
Icon( Icon(
imageVector = Icons.Outlined.Warning, imageVector = MaterialSymbols.Rounded.Warning,
contentDescription = null, contentDescription = null,
tint = MaterialTheme.colorScheme.active, tint = MaterialTheme.colorScheme.active,
) )
@@ -17,14 +17,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.ArrowForward
import androidx.compose.material.icons.outlined.Close
import androidx.compose.material.icons.outlined.ContentCopy
import androidx.compose.material.icons.outlined.CopyAll
import androidx.compose.material.icons.outlined.Done
import androidx.compose.material.icons.outlined.DoneAll
import androidx.compose.material.icons.outlined.MoreVert
import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
@@ -55,6 +47,14 @@ import eu.kanade.presentation.util.formatChapterNumber
import eu.kanade.presentation.util.rememberResourceBitmapPainter import eu.kanade.presentation.util.rememberResourceBitmapPainter
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import mihon.feature.migration.list.models.MigratingManga import mihon.feature.migration.list.models.MigratingManga
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ArrowForward
import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.ContentCopy
import mihon.icons.materialsymbols.rounded.CopyAll
import mihon.icons.materialsymbols.rounded.Done
import mihon.icons.materialsymbols.rounded.DoneAll
import mihon.icons.materialsymbols.rounded.MoreVert
import tachiyomi.domain.manga.model.Manga import tachiyomi.domain.manga.model.Manga
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.Badge import tachiyomi.presentation.core.components.Badge
@@ -91,13 +91,25 @@ fun MigrationListScreenContent(
listOf( listOf(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.migrationListScreen_copyActionLabel), title = stringResource(MR.strings.migrationListScreen_copyActionLabel),
icon = if (items.size == 1) Icons.Outlined.ContentCopy else Icons.Outlined.CopyAll, icon = if (items.size ==
1
) {
MaterialSymbols.Rounded.ContentCopy
} else {
MaterialSymbols.Rounded.CopyAll
},
onClick = { openMigrationDialog(true) }, onClick = { openMigrationDialog(true) },
enabled = migrationComplete, enabled = migrationComplete,
), ),
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.migrationListScreen_migrateActionLabel), title = stringResource(MR.strings.migrationListScreen_migrateActionLabel),
icon = if (items.size == 1) Icons.Outlined.Done else Icons.Outlined.DoneAll, icon = if (items.size ==
1
) {
MaterialSymbols.Rounded.Done
} else {
MaterialSymbols.Rounded.DoneAll
},
onClick = { openMigrationDialog(false) }, onClick = { openMigrationDialog(false) },
enabled = migrationComplete, enabled = migrationComplete,
), ),
@@ -135,7 +147,7 @@ fun MigrationListScreenContent(
) )
Icon( Icon(
imageVector = Icons.AutoMirrored.Outlined.ArrowForward, imageVector = MaterialSymbols.AutoMirroredRounded.ArrowForward,
contentDescription = null, contentDescription = null,
modifier = Modifier.weight(0.2f), modifier = Modifier.weight(0.2f),
) )
@@ -316,7 +328,7 @@ private fun MigrationListItemAction(
MigratingManga.SearchResult.Searching -> { MigratingManga.SearchResult.Searching -> {
IconButton(onClick = onSkip) { IconButton(onClick = onSkip) {
Icon( Icon(
imageVector = Icons.Outlined.Close, imageVector = MaterialSymbols.Rounded.Close,
contentDescription = null, contentDescription = null,
) )
} }
@@ -324,7 +336,7 @@ private fun MigrationListItemAction(
MigratingManga.SearchResult.NotFound, is MigratingManga.SearchResult.Success -> { MigratingManga.SearchResult.NotFound, is MigratingManga.SearchResult.Success -> {
IconButton(onClick = { menuExpanded = true }) { IconButton(onClick = { menuExpanded = true }) {
Icon( Icon(
imageVector = Icons.Outlined.MoreVert, imageVector = MaterialSymbols.Rounded.MoreVert,
contentDescription = null, contentDescription = null,
) )
} }
@@ -8,8 +8,6 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.OpenInNew
import androidx.compose.material3.Card import androidx.compose.material3.Card
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -28,14 +26,16 @@ import cafe.adriel.voyager.navigator.currentOrThrow
import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.AppBar
import eu.kanade.presentation.more.settings.widget.TextPreferenceWidget import eu.kanade.presentation.more.settings.widget.TextPreferenceWidget
import eu.kanade.presentation.util.Screen import eu.kanade.presentation.util.Screen
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.OpenInNew
import mihon.icons.simpleicons.Discord
import mihon.icons.simpleicons.OpenCollective
import mihon.icons.simpleicons.Patreon
import mihon.icons.simpleicons.SimpleIcons
import tachiyomi.core.common.Constants import tachiyomi.core.common.Constants
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.components.material.padding
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
import tachiyomi.presentation.core.icons.CustomIcons
import tachiyomi.presentation.core.icons.Discord
import tachiyomi.presentation.core.icons.OpenCollective
import tachiyomi.presentation.core.icons.Patreon
class SupportUsScreen : Screen() { class SupportUsScreen : Screen() {
@@ -87,12 +87,12 @@ class SupportUsScreen : Screen() {
) )
SupportItem( SupportItem(
icon = CustomIcons.Patreon, icon = SimpleIcons.Patreon,
title = stringResource(MR.strings.supportUsScreen_donationPlatform_patreon), title = stringResource(MR.strings.supportUsScreen_donationPlatform_patreon),
onClick = { uriHandler.openUri(Constants.URL_DONATE_PATREON) }, onClick = { uriHandler.openUri(Constants.URL_DONATE_PATREON) },
) )
SupportItem( SupportItem(
icon = CustomIcons.OpenCollective, icon = SimpleIcons.OpenCollective,
title = stringResource(MR.strings.supportUsScreen_donationPlatform_opencollective), title = stringResource(MR.strings.supportUsScreen_donationPlatform_opencollective),
onClick = { uriHandler.openUri(Constants.URL_DONATE_OPENCOLLECTIVE) }, onClick = { uriHandler.openUri(Constants.URL_DONATE_OPENCOLLECTIVE) },
) )
@@ -110,7 +110,7 @@ class SupportUsScreen : Screen() {
) )
SupportItem( SupportItem(
icon = CustomIcons.Discord, icon = SimpleIcons.Discord,
title = stringResource(MR.strings.supportUsScreen_contactPlatform), title = stringResource(MR.strings.supportUsScreen_contactPlatform),
onClick = { uriHandler.openUri(Constants.URL_DISCORD) }, onClick = { uriHandler.openUri(Constants.URL_DISCORD) },
) )
@@ -132,7 +132,7 @@ class SupportUsScreen : Screen() {
icon = icon, icon = icon,
widget = { widget = {
Icon( Icon(
imageVector = Icons.AutoMirrored.Filled.OpenInNew, imageVector = MaterialSymbols.AutoMirroredRounded.OpenInNew,
contentDescription = null, contentDescription = null,
) )
}, },
@@ -7,9 +7,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.HelpOutline
import androidx.compose.material.icons.outlined.FilterList
import androidx.compose.material3.Badge import androidx.compose.material3.Badge
import androidx.compose.material3.LocalContentColor import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -31,6 +28,9 @@ import kotlinx.datetime.LocalDate
import kotlinx.datetime.YearMonth import kotlinx.datetime.YearMonth
import mihon.feature.upcoming.components.UpcomingItem import mihon.feature.upcoming.components.UpcomingItem
import mihon.feature.upcoming.components.calendar.Calendar import mihon.feature.upcoming.components.calendar.Calendar
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.Help
import mihon.icons.materialsymbols.rounded.FilterList
import tachiyomi.core.common.Constants import tachiyomi.core.common.Constants
import tachiyomi.domain.manga.model.Manga import tachiyomi.domain.manga.model.Manga
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
@@ -110,13 +110,13 @@ private fun UpcomingToolbar(
listOf( listOf(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_filter), title = stringResource(MR.strings.action_filter),
icon = Icons.Outlined.FilterList, icon = MaterialSymbols.Rounded.FilterList,
iconTint = if (hasFilters) MaterialTheme.colorScheme.active else LocalContentColor.current, iconTint = if (hasFilters) MaterialTheme.colorScheme.active else LocalContentColor.current,
onClick = onClickFilter, onClick = onClickFilter,
), ),
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.upcoming_guide), title = stringResource(MR.strings.upcoming_guide),
icon = Icons.AutoMirrored.Outlined.HelpOutline, icon = MaterialSymbols.AutoMirroredRounded.Help,
onClick = { uriHandler.openUri(Constants.URL_HELP_UPCOMING) }, onClick = { uriHandler.openUri(Constants.URL_HELP_UPCOMING) },
), ),
), ),
@@ -12,9 +12,6 @@ import androidx.compose.animation.slideOutVertically
import androidx.compose.animation.togetherWith import androidx.compose.animation.togetherWith
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.KeyboardArrowLeft
import androidx.compose.material.icons.filled.KeyboardArrowRight
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -29,6 +26,9 @@ import kotlinx.datetime.YearMonth
import kotlinx.datetime.toJavaYearMonth import kotlinx.datetime.toJavaYearMonth
import kotlinx.datetime.toLocalDateTime import kotlinx.datetime.toLocalDateTime
import kotlinx.datetime.yearMonth import kotlinx.datetime.yearMonth
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.KeyboardArrowLeft
import mihon.icons.materialsymbols.rounded.KeyboardArrowRight
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
import java.time.format.DateTimeFormatter import java.time.format.DateTimeFormatter
@@ -60,11 +60,11 @@ fun CalenderHeader(
Row { Row {
IconButton(onClick = onPreviousClick) { IconButton(onClick = onPreviousClick) {
@Suppress("DEPRECATION") @Suppress("DEPRECATION")
Icon(Icons.Default.KeyboardArrowLeft, stringResource(MR.strings.upcoming_calendar_prev)) Icon(MaterialSymbols.Rounded.KeyboardArrowLeft, stringResource(MR.strings.upcoming_calendar_prev))
} }
IconButton(onClick = onNextClick) { IconButton(onClick = onNextClick) {
@Suppress("DEPRECATION") @Suppress("DEPRECATION")
Icon(Icons.Default.KeyboardArrowRight, stringResource(MR.strings.upcoming_calendar_next)) Icon(MaterialSymbols.Rounded.KeyboardArrowRight, stringResource(MR.strings.upcoming_calendar_next))
} }
} }
} }
+3 -1
View File
@@ -75,6 +75,7 @@ subsamplingScaleImageView = "94915e6f73"
swipe = "1.3.0" swipe = "1.3.0"
tapmoc = "0.4.2" tapmoc = "0.4.2"
unifile = "08f224c8f9" unifile = "08f224c8f9"
valkyrie = "0.5.2"
voyager = "2.2.21-1.10.3" voyager = "2.2.21-1.10.3"
webgpuviewer = "39" webgpuviewer = "39"
xmlutil = "1.0.2" xmlutil = "1.0.2"
@@ -94,9 +95,9 @@ androidx-compose-bom = { module = "androidx.compose:compose-bom-alpha", version.
androidx-compose-foundation = { module = "androidx.compose.foundation:foundation" } androidx-compose-foundation = { module = "androidx.compose.foundation:foundation" }
androidx-compose-material3 = { module = "androidx.compose.material3:material3" } androidx-compose-material3 = { module = "androidx.compose.material3:material3" }
androidx-compose-material3NavSuite = { module = "androidx.compose.material3:material3-adaptive-navigation-suite" } androidx-compose-material3NavSuite = { module = "androidx.compose.material3:material3-adaptive-navigation-suite" }
androidx-compose-materialIcons = { module = "androidx.compose.material:material-icons-extended" }
androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" } androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" }
androidx-compose-runtimeAnnotation = { module = "androidx.compose.runtime:runtime-annotation" } androidx-compose-runtimeAnnotation = { module = "androidx.compose.runtime:runtime-annotation" }
androidx-compose-ui = { module = "androidx.compose.ui:ui" }
androidx-compose-uiTooling = { module = "androidx.compose.ui:ui-tooling" } androidx-compose-uiTooling = { module = "androidx.compose.ui:ui-tooling" }
androidx-compose-uiToolingPreview = { module = "androidx.compose.ui:ui-tooling-preview" } androidx-compose-uiToolingPreview = { module = "androidx.compose.ui:ui-tooling-preview" }
androidx-compose-uiUtil = { module = "androidx.compose.ui:ui-util" } androidx-compose-uiUtil = { module = "androidx.compose.ui:ui-util" }
@@ -218,6 +219,7 @@ moko-resources = { id = "dev.icerock.mobile.multiplatform-resources", version.re
metro = { id = "dev.zacsweers.metro", version.ref = "metro" } metro = { id = "dev.zacsweers.metro", version.ref = "metro" }
spotless = { id = "com.diffplug.spotless", version.ref = "spotless" } spotless = { id = "com.diffplug.spotless", version.ref = "spotless" }
sqldelight = { id = "app.cash.sqldelight", version.ref = "sqldelight" } sqldelight = { id = "app.cash.sqldelight", version.ref = "sqldelight" }
valkyrie = { id = "io.github.composegears.valkyrie", version.ref = "valkyrie" }
[bundles] [bundles]
androidx-lifecycle = ["androidx-lifecycle-common", "androidx-lifecycle-process", "androidx-lifecycle-runtime", "androidx-lifecycle-viewmodel", "androidx-lifecycle-viewmodelCompose"] androidx-lifecycle = ["androidx-lifecycle-common", "androidx-lifecycle-process", "androidx-lifecycle-runtime", "androidx-lifecycle-viewmodel", "androidx-lifecycle-viewmodelCompose"]
+57
View File
@@ -0,0 +1,57 @@
plugins {
alias(mihonx.plugins.android.library)
alias(mihonx.plugins.compose)
alias(mihonx.plugins.spotless)
alias(libs.plugins.valkyrie)
}
android {
namespace = "mihon.icons.materialsymbols"
}
spotless {
format("svg") {
target("src/**/*.svg")
trimTrailingWhitespace()
endWithNewline()
}
}
valkyrie {
packageName = "mihon.icons.materialsymbols"
generateAtSync = true
imageVector {
suppressUnusedReceiverWarning = true
}
iconPack {
name = "MaterialSymbols"
targetSourceSet = "main"
nested {
name = "Rounded"
sourceFolder = "rounded"
autoMirror = false
}
nested {
name = "RoundedFilled"
sourceFolder = "roundedFilled"
autoMirror = false
}
// https://github.com/ComposeGears/Valkyrie/pull/1019
nested {
name = "AutoMirroredRounded"
sourceFolder = "autoMirroredRounded"
autoMirror = true
}
}
}
dependencies {
api(libs.androidx.compose.ui)
}
@@ -0,0 +1,6 @@
<!--
Material Symbols Rounded 'arrow_back', v399.
Copyright (C) Google LLC
SPDX-License-Identifier: Apache-2.0
-->
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="m313-440 196 196q12 12 11.5 28T508-188q-12 11-28 11.5T452-188L188-452q-6-6-8.5-13t-2.5-15q0-8 2.5-15t8.5-13l264-264q11-11 27.5-11t28.5 11q12 12 12 28.5T508-715L313-520h447q17 0 28.5 11.5T800-480q0 17-11.5 28.5T760-440H313Z"/></svg>

After

Width:  |  Height:  |  Size: 450 B

@@ -0,0 +1,6 @@
<!--
Material Symbols Rounded 'arrow_forward', v399.
Copyright (C) Google LLC
SPDX-License-Identifier: Apache-2.0
-->
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M647-440H200q-17 0-28.5-11.5T160-480q0-17 11.5-28.5T200-520h447L451-716q-12-12-11.5-28t12.5-28q12-11 28-11.5t28 11.5l264 264q6 6 8.5 13t2.5 15q0 8-2.5 15t-8.5 13L508-188q-11 11-27.5 11T452-188q-12-12-12-28.5t12-28.5l195-195Z"/></svg>

After

Width:  |  Height:  |  Size: 455 B

@@ -0,0 +1,6 @@
<!--
Material Symbols Rounded 'arrow_right', v399.
Copyright (C) Google LLC
SPDX-License-Identifier: Apache-2.0
-->
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M420-308q-8 0-14-5.5t-6-14.5v-304q0-9 6-14.5t14-5.5q2 0 14 6l145 145q5 5 7 10t2 11q0 6-2 11t-7 10L434-314q-3 3-6.5 4.5T420-308Z"/></svg>

After

Width:  |  Height:  |  Size: 356 B

@@ -0,0 +1,6 @@
<!--
Material Symbols Rounded 'chrome_reader_mode', v399.
Copyright (C) Google LLC
SPDX-License-Identifier: Apache-2.0
-->
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h640q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160Zm0-80h280v-480H160v480Zm360 0h280v-480H520v480Zm210-120q13 0 21.5-8.5T760-390q0-13-8.5-21.5T730-420H590q-13 0-21.5 8.5T560-390q0 13 8.5 21.5T590-360h140Zm0-100q13 0 21.5-8.5T760-490q0-13-8.5-21.5T730-520H590q-13 0-21.5 8.5T560-490q0 13 8.5 21.5T590-460h140Zm0-100q13 0 21.5-8.5T760-590q0-13-8.5-21.5T730-620H590q-13 0-21.5 8.5T560-590q0 13 8.5 21.5T590-560h140ZM160-240v-480 480Z"/></svg>

After

Width:  |  Height:  |  Size: 733 B

@@ -0,0 +1,6 @@
<!--
Material Symbols Rounded 'format_list_bulleted', v399.
Copyright (C) Google LLC
SPDX-License-Identifier: Apache-2.0
-->
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M400-200q-17 0-28.5-11.5T360-240q0-17 11.5-28.5T400-280h400q17 0 28.5 11.5T840-240q0 17-11.5 28.5T800-200H400Zm0-240q-17 0-28.5-11.5T360-480q0-17 11.5-28.5T400-520h400q17 0 28.5 11.5T840-480q0 17-11.5 28.5T800-440H400Zm0-240q-17 0-28.5-11.5T360-720q0-17 11.5-28.5T400-760h400q17 0 28.5 11.5T840-720q0 17-11.5 28.5T800-680H400ZM200-160q-33 0-56.5-23.5T120-240q0-33 23.5-56.5T200-320q33 0 56.5 23.5T280-240q0 33-23.5 56.5T200-160Zm0-240q-33 0-56.5-23.5T120-480q0-33 23.5-56.5T200-560q33 0 56.5 23.5T280-480q0 33-23.5 56.5T200-400Zm-56.5-263.5Q120-687 120-720t23.5-56.5Q167-800 200-800t56.5 23.5Q280-753 280-720t-23.5 56.5Q233-640 200-640t-56.5-23.5Z"/></svg>

After

Width:  |  Height:  |  Size: 885 B

@@ -0,0 +1,6 @@
<!--
Material Symbols Rounded 'help', v399.
Copyright (C) Google LLC
SPDX-License-Identifier: Apache-2.0
-->
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M513.5-254.5Q528-269 528-290t-14.5-35.5Q499-340 478-340t-35.5 14.5Q428-311 428-290t14.5 35.5Q457-240 478-240t35.5-14.5ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Zm4-172q25 0 43.5 16t18.5 40q0 22-13.5 39T502-525q-23 20-40.5 44T444-427q0 14 10.5 23.5T479-394q15 0 25.5-10t13.5-25q4-21 18-37.5t30-31.5q23-22 39.5-48t16.5-58q0-51-41.5-83.5T484-720q-38 0-72.5 16T359-655q-7 12-4.5 25.5T368-609q14 8 29 5t25-17q11-15 27.5-23t34.5-8Z"/></svg>

After

Width:  |  Height:  |  Size: 890 B

@@ -0,0 +1,6 @@
<!--
Material Symbols Rounded 'label', v329.
Copyright (C) Google LLC
SPDX-License-Identifier: Apache-2.0
-->
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h440q19 0 36 8.5t28 23.5l180 240q16 21 16 48t-16 48L664-192q-11 15-28 23.5t-36 8.5H160Zm0-80h440l180-240-180-240H160v480Zm310-240Z"/></svg>

After

Width:  |  Height:  |  Size: 412 B

@@ -0,0 +1,6 @@
<!--
Material Symbols Rounded 'open_in_new', v399.
Copyright (C) Google LLC
SPDX-License-Identifier: Apache-2.0
-->
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h240q17 0 28.5 11.5T480-800q0 17-11.5 28.5T440-760H200v560h560v-240q0-17 11.5-28.5T800-480q17 0 28.5 11.5T840-440v240q0 33-23.5 56.5T760-120H200Zm560-584L416-360q-11 11-28 11t-28-11q-11-11-11-28t11-28l344-344H600q-17 0-28.5-11.5T560-800q0-17 11.5-28.5T600-840h200q17 0 28.5 11.5T840-800v200q0 17-11.5 28.5T800-560q-17 0-28.5-11.5T760-600v-104Z"/></svg>

After

Width:  |  Height:  |  Size: 632 B

@@ -0,0 +1,6 @@
<!--
Material Symbols Rounded 'sort', v399.
Copyright (C) Google LLC
SPDX-License-Identifier: Apache-2.0
-->
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M160-240q-17 0-28.5-11.5T120-280q0-17 11.5-28.5T160-320h160q17 0 28.5 11.5T360-280q0 17-11.5 28.5T320-240H160Zm0-200q-17 0-28.5-11.5T120-480q0-17 11.5-28.5T160-520h400q17 0 28.5 11.5T600-480q0 17-11.5 28.5T560-440H160Zm0-200q-17 0-28.5-11.5T120-680q0-17 11.5-28.5T160-720h640q17 0 28.5 11.5T840-680q0 17-11.5 28.5T800-640H160Z"/></svg>

After

Width:  |  Height:  |  Size: 548 B

@@ -0,0 +1,6 @@
<!--
Material Symbols Rounded 'view_list', v329.
Copyright (C) Google LLC
SPDX-License-Identifier: Apache-2.0
-->
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M360-240h440v-107H360v107ZM160-613h120v-107H160v107Zm0 187h120v-107H160v107Zm0 186h120v-107H160v107Zm200-186h440v-107H360v107Zm0-187h440v-107H360v107ZM160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h640q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160Z"/></svg>

After

Width:  |  Height:  |  Size: 495 B

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