Update icons and move remaining to Material Symbols (#4057)

* Update Simple Icons to 16.34.0

The brand paths are unchanged; only the version in the headers moves.

* Use the current Material Symbols names

Several symbols were renamed after the Valkyrie migration. people_alt,
new_releases, screen_lock_*, screen_rotation and stay_current_* are only
aliases in the font now, for group, verified and the mobile_* symbols.
done, push_pin and expand_less/expand_more become check, keep and
keyboard_arrow_up/down, which draw the same or an almost identical glyph.

* Use filled icons where the Material Symbols migration dropped the fill

The migration mapped Filled and Default references to the outline symbols,
but the classic glyph was often solid, and Outlined Warning, Error and
Pause were solid as well. Each call site was compared against the rendered
classic glyph, and the solid ones now use RoundedFilled. view_list needs an
auto-mirrored filled pack. The outline SVGs this leaves unused are removed.

* Show a compact grid icon for the compact display modes

Compact and cover-only grids showed the same view_module icon as the
comfortable grid.

* Generate notification and layout drawables from Material Symbols

Notifications and XML layouts can't use ImageVectors, so they relied on
hand-kept copies of classic Material drawables. A build-logic task now
converts an opt-in list of the module's SVGs with AGP's Svg2Vector into
generated resources. sdk-common is taken from AGP's own dependency metadata,
so its version always matches AGP.

Compose call sites that only needed a drawable (tab close, crop) use the
ImageVectors instead. The icons module's R class must be imported as
MaterialSymbolsR, enforced by spotless, so it isn't mistaken for the app's R.

* Redraw custom icons in the Material Symbols style

The reading mode, crop off, mark previous as read and chapter download
icons were drawn in the classic style. They are rebuilt from Material
Symbols shapes (mobile_gear, mobile_arrow_right/down, crop,
arrow_circle_down, downloading) in a new custom-material-symbols module;
each SVG header lists where its parts come from. The default reading mode
and incognito use mobile_gear and eyeglasses_2 as they are.

ReadingMode holds an ImageVector now, and the module's R class follows the
same alias rule as MaterialSymbolsR.

* Use Material Symbols for the launcher shortcuts

Updates uses release_alert because the symbol named new_releases is now a
check badge.

* Rename the animated icon drawables

anim_*_enter no longer fits now that the icons play in both directions.
This is a pure rename so the following commits show only content changes.

* Use Material Symbols for the bottom navigation icons

The library, updates, history and browse animations are rebuilt from the
outline and filled symbols but keep their original motion: the white inside
is pushed into the ribbon, the "!" and the needle, and the history ring
still spins. Updates uses release_alert, like the shortcut. More already
matches more_horiz and is unchanged.

* Use rounded bars for the manga description caret

The animation is unchanged; the bars get rounded ends to match the
Material Symbols stroke.

* Settle the browse tab icon when selecting and deselecting

The compass turns a full turn and settles with overshoot both ways, instead
of deselecting by playing the select animation backwards. A
rememberAnimatedVectorPainter overload takes separate enter and exit
animations and doesn't animate on the first composition.
This commit is contained in:
AntsyLich
2026-10-09 17:50:12 +00:00
committed by GitHub
parent dd46413e10
commit a80027ff36
151 changed files with 804 additions and 747 deletions
+1
View File
@@ -205,6 +205,7 @@ dependencies {
baselineProfile(projects.baselineProfile) baselineProfile(projects.baselineProfile)
implementation(projects.i18n) implementation(projects.i18n)
implementation(projects.icons.customMaterialSymbols)
implementation(projects.icons.materialSymbols) implementation(projects.icons.materialSymbols)
implementation(projects.icons.simpleIcons) implementation(projects.icons.simpleIcons)
implementation(projects.core.archive) implementation(projects.core.archive)
@@ -34,10 +34,8 @@ 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.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
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
@@ -51,13 +49,13 @@ import eu.kanade.presentation.components.AppBarActions
import eu.kanade.presentation.components.WarningBanner import eu.kanade.presentation.components.WarningBanner
import eu.kanade.presentation.more.settings.widget.TextPreferenceWidget import eu.kanade.presentation.more.settings.widget.TextPreferenceWidget
import eu.kanade.presentation.more.settings.widget.TrailingWidgetBuffer import eu.kanade.presentation.more.settings.widget.TrailingWidgetBuffer
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.extension.model.Extension import eu.kanade.tachiyomi.extension.model.Extension
import eu.kanade.tachiyomi.source.ConfigurableSource 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.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Eyeglasses2
import mihon.icons.materialsymbols.rounded.Settings 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
@@ -351,7 +349,7 @@ private fun DetailsHeader(
modifier = Modifier.padding(horizontal = MaterialTheme.padding.small), modifier = Modifier.padding(horizontal = MaterialTheme.padding.small),
title = stringResource(MR.strings.pref_incognito_mode), title = stringResource(MR.strings.pref_incognito_mode),
subtitle = stringResource(MR.strings.pref_incognito_mode_extension_summary), subtitle = stringResource(MR.strings.pref_incognito_mode_extension_summary),
icon = ImageVector.vectorResource(R.drawable.ic_glasses_24dp), icon = MaterialSymbols.Rounded.Eyeglasses2,
widget = { widget = {
Row( Row(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
@@ -64,8 +64,8 @@ import mihon.domain.extension.model.ExtensionStore
import mihon.icons.materialsymbols.MaterialSymbols import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Close import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.Download import mihon.icons.materialsymbols.rounded.Download
import mihon.icons.materialsymbols.rounded.ExpandMore
import mihon.icons.materialsymbols.rounded.Info import mihon.icons.materialsymbols.rounded.Info
import mihon.icons.materialsymbols.rounded.KeyboardArrowDown
import mihon.icons.materialsymbols.rounded.Refresh import mihon.icons.materialsymbols.rounded.Refresh
import mihon.icons.materialsymbols.rounded.Settings import mihon.icons.materialsymbols.rounded.Settings
import mihon.icons.materialsymbols.rounded.VerifiedUser import mihon.icons.materialsymbols.rounded.VerifiedUser
@@ -641,7 +641,7 @@ private fun ExtensionSplitButton(
contentPadding = SplitButtonDefaults.trailingButtonContentPaddingFor(size), contentPadding = SplitButtonDefaults.trailingButtonContentPaddingFor(size),
) { ) {
Icon( Icon(
imageVector = MaterialSymbols.Rounded.ExpandMore, imageVector = MaterialSymbols.Rounded.KeyboardArrowDown,
contentDescription = stringResource(MR.strings.action_menu), contentDescription = stringResource(MR.strings.action_menu),
modifier = Modifier.size(SplitButtonDefaults.trailingButtonIconSizeFor(size)), modifier = Modifier.size(SplitButtonDefaults.trailingButtonIconSizeFor(size)),
) )
@@ -22,8 +22,8 @@ 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.MaterialSymbols
import mihon.icons.materialsymbols.rounded.PushPin import mihon.icons.materialsymbols.rounded.Keep
import mihon.icons.materialsymbols.roundedfilled.PushPin import mihon.icons.materialsymbols.roundedfilled.Keep
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) MaterialSymbols.RoundedFilled.PushPin else MaterialSymbols.Rounded.PushPin val icon = if (isPinned) MaterialSymbols.RoundedFilled.Keep else MaterialSymbols.Rounded.Keep
val tint = if (isPinned) { val tint = if (isPinned) {
MaterialTheme.colorScheme.primary MaterialTheme.colorScheme.primary
} else { } else {
@@ -29,8 +29,8 @@ 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.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Dangerous import mihon.icons.materialsymbols.roundedfilled.Dangerous
import mihon.icons.materialsymbols.rounded.Warning import mihon.icons.materialsymbols.roundedfilled.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 = MaterialSymbols.Rounded.Warning, imageVector = MaterialSymbols.RoundedFilled.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.NotLoaded -> Image( is Extension.NotLoaded -> Image(
imageVector = MaterialSymbols.Rounded.Dangerous, imageVector = MaterialSymbols.RoundedFilled.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),
@@ -16,8 +16,9 @@ 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.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ViewList import mihon.icons.materialsymbols.automirroredroundedfilled.ViewList
import mihon.icons.materialsymbols.rounded.ViewModule import mihon.icons.materialsymbols.roundedfilled.ViewCompact
import mihon.icons.materialsymbols.roundedfilled.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
@@ -57,10 +58,12 @@ fun BrowseSourceToolbar(
add( add(
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_display_mode), title = stringResource(MR.strings.action_display_mode),
icon = if (displayMode == LibraryDisplayMode.List) { icon = when (displayMode) {
MaterialSymbols.AutoMirroredRounded.ViewList LibraryDisplayMode.List -> MaterialSymbols.AutoMirroredRoundedFilled.ViewList
} else { LibraryDisplayMode.ComfortableGrid -> MaterialSymbols.RoundedFilled.ViewModule
MaterialSymbols.Rounded.ViewModule LibraryDisplayMode.CompactGrid,
LibraryDisplayMode.CoverOnlyGrid,
-> MaterialSymbols.RoundedFilled.ViewCompact
}, },
onClick = { selectingDisplayMode = true }, onClick = { selectingDisplayMode = true },
), ),
@@ -22,7 +22,7 @@ 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.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ArrowForward import mihon.icons.materialsymbols.automirroredrounded.ArrowForward
import mihon.icons.materialsymbols.rounded.Error import mihon.icons.materialsymbols.roundedfilled.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
@@ -90,7 +90,7 @@ fun GlobalSearchErrorResultItem(message: String?) {
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center, verticalArrangement = Arrangement.Center,
) { ) {
Icon(imageVector = MaterialSymbols.Rounded.Error, contentDescription = null) Icon(imageVector = MaterialSymbols.RoundedFilled.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),
@@ -28,7 +28,7 @@ import eu.kanade.tachiyomi.ui.browse.source.globalsearch.SourceFilter
import mihon.icons.materialsymbols.MaterialSymbols import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.DoneAll import mihon.icons.materialsymbols.rounded.DoneAll
import mihon.icons.materialsymbols.rounded.FilterList import mihon.icons.materialsymbols.rounded.FilterList
import mihon.icons.materialsymbols.rounded.PushPin import mihon.icons.materialsymbols.rounded.Keep
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 = MaterialSymbols.Rounded.PushPin, imageVector = MaterialSymbols.Rounded.Keep,
contentDescription = null, contentDescription = null,
modifier = Modifier modifier = Modifier
.size(FilterChipDefaults.IconSize), .size(FilterChipDefaults.IconSize),
@@ -31,7 +31,7 @@ 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.MaterialSymbols
import mihon.icons.materialsymbols.rounded.PeopleAlt import mihon.icons.materialsymbols.rounded.Group
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 = MaterialSymbols.Rounded.PeopleAlt, imageVector = MaterialSymbols.Rounded.Group,
contentDescription = null, contentDescription = null,
tint = if (active) { tint = if (active) {
MaterialTheme.colorScheme.active MaterialTheme.colorScheme.active
@@ -58,14 +58,14 @@ import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Add import mihon.icons.materialsymbols.rounded.Add
import mihon.icons.materialsymbols.rounded.AttachMoney import mihon.icons.materialsymbols.rounded.AttachMoney
import mihon.icons.materialsymbols.rounded.Block import mihon.icons.materialsymbols.rounded.Block
import mihon.icons.materialsymbols.rounded.Brush import mihon.icons.materialsymbols.rounded.Check
import mihon.icons.materialsymbols.rounded.Close import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.Done
import mihon.icons.materialsymbols.rounded.DoneAll import mihon.icons.materialsymbols.rounded.DoneAll
import mihon.icons.materialsymbols.rounded.Pause
import mihon.icons.materialsymbols.rounded.Person import mihon.icons.materialsymbols.rounded.Person
import mihon.icons.materialsymbols.rounded.Schedule import mihon.icons.materialsymbols.rounded.Schedule
import mihon.icons.materialsymbols.rounded.Warning import mihon.icons.materialsymbols.roundedfilled.Brush
import mihon.icons.materialsymbols.roundedfilled.Pause
import mihon.icons.materialsymbols.roundedfilled.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
@@ -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 = MaterialSymbols.Rounded.Brush, iconImageVector = MaterialSymbols.RoundedFilled.Brush,
maxLines = 2, maxLines = 2,
) )
} }
@@ -257,9 +257,9 @@ private fun DuplicateMangaListItem(
SManga.ONGOING.toLong() -> MaterialSymbols.Rounded.Schedule SManga.ONGOING.toLong() -> MaterialSymbols.Rounded.Schedule
SManga.COMPLETED.toLong() -> MaterialSymbols.Rounded.DoneAll SManga.COMPLETED.toLong() -> MaterialSymbols.Rounded.DoneAll
SManga.LICENSED.toLong() -> MaterialSymbols.Rounded.AttachMoney SManga.LICENSED.toLong() -> MaterialSymbols.Rounded.AttachMoney
SManga.PUBLISHING_FINISHED.toLong() -> MaterialSymbols.Rounded.Done SManga.PUBLISHING_FINISHED.toLong() -> MaterialSymbols.Rounded.Check
SManga.CANCELLED.toLong() -> MaterialSymbols.Rounded.Close SManga.CANCELLED.toLong() -> MaterialSymbols.Rounded.Close
SManga.ON_HIATUS.toLong() -> MaterialSymbols.Rounded.Pause SManga.ON_HIATUS.toLong() -> MaterialSymbols.RoundedFilled.Pause
else -> MaterialSymbols.Rounded.Block else -> MaterialSymbols.Rounded.Block
}, },
) )
@@ -272,7 +272,7 @@ private fun DuplicateMangaListItem(
) { ) {
if (source is StubSource) { if (source is StubSource) {
Icon( Icon(
imageVector = MaterialSymbols.Rounded.Warning, imageVector = MaterialSymbols.RoundedFilled.Warning,
contentDescription = null, contentDescription = null,
modifier = Modifier.size(16.dp), modifier = Modifier.size(16.dp),
tint = MaterialTheme.colorScheme.error, tint = MaterialTheme.colorScheme.error,
@@ -24,14 +24,14 @@ import androidx.compose.ui.graphics.StrokeCap
import androidx.compose.ui.hapticfeedback.HapticFeedback import androidx.compose.ui.hapticfeedback.HapticFeedback
import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.hapticfeedback.HapticFeedbackType
import androidx.compose.ui.platform.LocalHapticFeedback import androidx.compose.ui.platform.LocalHapticFeedback
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.Role
import androidx.compose.ui.unit.dp 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.data.download.model.Download import eu.kanade.tachiyomi.data.download.model.Download
import mihon.icons.custommaterialsymbols.CustomMaterialSymbols
import mihon.icons.custommaterialsymbols.rounded.DownloadArrow
import mihon.icons.custommaterialsymbols.rounded.DownloadCircle
import mihon.icons.materialsymbols.MaterialSymbols import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.ArrowDownward
import mihon.icons.materialsymbols.rounded.Error import mihon.icons.materialsymbols.rounded.Error
import mihon.icons.materialsymbols.roundedfilled.CheckCircle import mihon.icons.materialsymbols.roundedfilled.CheckCircle
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
@@ -99,7 +99,7 @@ private fun NotDownloadedIndicator(
contentAlignment = Alignment.Center, contentAlignment = Alignment.Center,
) { ) {
Icon( Icon(
painter = painterResource(R.drawable.ic_download_chapter_24dp), imageVector = CustomMaterialSymbols.Rounded.DownloadCircle,
contentDescription = stringResource(MR.strings.manga_download), contentDescription = stringResource(MR.strings.manga_download),
modifier = Modifier.size(IndicatorSize), modifier = Modifier.size(IndicatorSize),
tint = MaterialTheme.colorScheme.onSurfaceVariant, tint = MaterialTheme.colorScheme.onSurfaceVariant,
@@ -179,7 +179,7 @@ private fun DownloadingIndicator(
) )
} }
Icon( Icon(
imageVector = MaterialSymbols.Rounded.ArrowDownward, imageVector = CustomMaterialSymbols.Rounded.DownloadArrow,
contentDescription = null, contentDescription = null,
modifier = ArrowModifier, modifier = ArrowModifier,
tint = arrowColor, tint = arrowColor,
@@ -279,4 +279,4 @@ private val IndicatorModifier = Modifier
.size(IndicatorSize) .size(IndicatorSize)
.padding(IndicatorPadding) .padding(IndicatorPadding)
private val ArrowModifier = Modifier private val ArrowModifier = Modifier
.size(IndicatorSize - 7.dp) .size(IndicatorSize)
@@ -40,18 +40,18 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.hapticfeedback.HapticFeedbackType
import androidx.compose.ui.platform.LocalHapticFeedback import androidx.compose.ui.platform.LocalHapticFeedback
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
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 eu.kanade.presentation.components.DownloadDropdownMenu import eu.kanade.presentation.components.DownloadDropdownMenu
import eu.kanade.presentation.components.DropdownMenu import eu.kanade.presentation.components.DropdownMenu
import eu.kanade.presentation.manga.DownloadAction import eu.kanade.presentation.manga.DownloadAction
import eu.kanade.tachiyomi.R
import kotlinx.coroutines.Job 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.custommaterialsymbols.CustomMaterialSymbols
import mihon.icons.custommaterialsymbols.rounded.DonePrevious
import mihon.icons.materialsymbols.MaterialSymbols import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.Label import mihon.icons.materialsymbols.automirroredrounded.Label
import mihon.icons.materialsymbols.rounded.BookmarkAdd import mihon.icons.materialsymbols.rounded.BookmarkAdd
@@ -149,7 +149,7 @@ fun MangaBottomActionMenu(
if (onMarkPreviousAsReadClicked != null) { if (onMarkPreviousAsReadClicked != null) {
Button( Button(
title = stringResource(MR.strings.action_mark_previous_as_read), title = stringResource(MR.strings.action_mark_previous_as_read),
icon = ImageVector.vectorResource(R.drawable.ic_done_prev_24dp), icon = CustomMaterialSymbols.Rounded.DonePrevious,
toConfirm = confirm[4], toConfirm = confirm[4],
onLongClick = { onLongClickItem(4) }, onLongClick = { onLongClickItem(4) },
onClick = onMarkPreviousAsReadClicked, onClick = onMarkPreviousAsReadClicked,
@@ -31,8 +31,8 @@ import me.saket.swipe.SwipeableActionsBox
import mihon.icons.materialsymbols.MaterialSymbols import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.BookmarkAdd import mihon.icons.materialsymbols.rounded.BookmarkAdd
import mihon.icons.materialsymbols.rounded.BookmarkRemove import mihon.icons.materialsymbols.rounded.BookmarkRemove
import mihon.icons.materialsymbols.rounded.Check
import mihon.icons.materialsymbols.rounded.Delete import mihon.icons.materialsymbols.rounded.Delete
import mihon.icons.materialsymbols.rounded.Done
import mihon.icons.materialsymbols.rounded.Download import mihon.icons.materialsymbols.rounded.Download
import mihon.icons.materialsymbols.rounded.FileDownloadOff import mihon.icons.materialsymbols.rounded.FileDownloadOff
import mihon.icons.materialsymbols.rounded.RemoveDone import mihon.icons.materialsymbols.rounded.RemoveDone
@@ -192,7 +192,7 @@ 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) MaterialSymbols.Rounded.Done else MaterialSymbols.Rounded.RemoveDone, icon = if (!read) MaterialSymbols.Rounded.Check else MaterialSymbols.Rounded.RemoveDone,
background = background, background = background,
isUndo = read, isUndo = read,
onSwipe = onSwipe, onSwipe = onSwipe,
@@ -82,19 +82,19 @@ import mihon.app.di.appGraph
import mihon.icons.materialsymbols.MaterialSymbols import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.AttachMoney import mihon.icons.materialsymbols.rounded.AttachMoney
import mihon.icons.materialsymbols.rounded.Block import mihon.icons.materialsymbols.rounded.Block
import mihon.icons.materialsymbols.rounded.Brush import mihon.icons.materialsymbols.rounded.Check
import mihon.icons.materialsymbols.rounded.Close import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.Done
import mihon.icons.materialsymbols.rounded.DoneAll import mihon.icons.materialsymbols.rounded.DoneAll
import mihon.icons.materialsymbols.rounded.Favorite import mihon.icons.materialsymbols.rounded.Favorite
import mihon.icons.materialsymbols.rounded.HourglassEmpty import mihon.icons.materialsymbols.rounded.HourglassEmpty
import mihon.icons.materialsymbols.rounded.Pause
import mihon.icons.materialsymbols.rounded.Person import mihon.icons.materialsymbols.rounded.Person
import mihon.icons.materialsymbols.rounded.Public import mihon.icons.materialsymbols.rounded.Public
import mihon.icons.materialsymbols.rounded.Schedule import mihon.icons.materialsymbols.rounded.Schedule
import mihon.icons.materialsymbols.rounded.Sync import mihon.icons.materialsymbols.rounded.Sync
import mihon.icons.materialsymbols.rounded.Warning import mihon.icons.materialsymbols.roundedfilled.Brush
import mihon.icons.materialsymbols.roundedfilled.Favorite import mihon.icons.materialsymbols.roundedfilled.Favorite
import mihon.icons.materialsymbols.roundedfilled.Pause
import mihon.icons.materialsymbols.roundedfilled.Warning
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
@@ -230,7 +230,7 @@ fun MangaActionRow(
} else { } else {
pluralStringResource(MR.plurals.num_trackers, count = trackingCount, trackingCount) pluralStringResource(MR.plurals.num_trackers, count = trackingCount, trackingCount)
}, },
icon = if (trackingCount == 0) MaterialSymbols.Rounded.Sync else MaterialSymbols.Rounded.Done, icon = if (trackingCount == 0) MaterialSymbols.Rounded.Sync else MaterialSymbols.Rounded.Check,
color = if (trackingCount == 0) defaultActionButtonColor else MaterialTheme.colorScheme.primary, color = if (trackingCount == 0) defaultActionButtonColor else MaterialTheme.colorScheme.primary,
onClick = onTrackingClicked, onClick = onTrackingClicked,
) )
@@ -491,7 +491,7 @@ private fun ColumnScope.MangaContentInfo(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Icon( Icon(
imageVector = MaterialSymbols.Rounded.Brush, imageVector = MaterialSymbols.RoundedFilled.Brush,
contentDescription = null, contentDescription = null,
modifier = Modifier.size(16.dp), modifier = Modifier.size(16.dp),
) )
@@ -519,9 +519,9 @@ private fun ColumnScope.MangaContentInfo(
SManga.ONGOING.toLong() -> MaterialSymbols.Rounded.Schedule SManga.ONGOING.toLong() -> MaterialSymbols.Rounded.Schedule
SManga.COMPLETED.toLong() -> MaterialSymbols.Rounded.DoneAll SManga.COMPLETED.toLong() -> MaterialSymbols.Rounded.DoneAll
SManga.LICENSED.toLong() -> MaterialSymbols.Rounded.AttachMoney SManga.LICENSED.toLong() -> MaterialSymbols.Rounded.AttachMoney
SManga.PUBLISHING_FINISHED.toLong() -> MaterialSymbols.Rounded.Done SManga.PUBLISHING_FINISHED.toLong() -> MaterialSymbols.Rounded.Check
SManga.CANCELLED.toLong() -> MaterialSymbols.Rounded.Close SManga.CANCELLED.toLong() -> MaterialSymbols.Rounded.Close
SManga.ON_HIATUS.toLong() -> MaterialSymbols.Rounded.Pause SManga.ON_HIATUS.toLong() -> MaterialSymbols.RoundedFilled.Pause
else -> MaterialSymbols.Rounded.Block else -> MaterialSymbols.Rounded.Block
}, },
contentDescription = null, contentDescription = null,
@@ -546,7 +546,7 @@ private fun ColumnScope.MangaContentInfo(
DotSeparatorText() DotSeparatorText()
if (isStubSource) { if (isStubSource) {
Icon( Icon(
imageVector = MaterialSymbols.Rounded.Warning, imageVector = MaterialSymbols.RoundedFilled.Warning,
contentDescription = null, contentDescription = null,
modifier = Modifier modifier = Modifier
.padding(end = 4.dp) .padding(end = 4.dp)
@@ -667,7 +667,7 @@ private fun MangaSummary(
modifier = Modifier.background(Brush.verticalGradient(colors = colors)), modifier = Modifier.background(Brush.verticalGradient(colors = colors)),
contentAlignment = Alignment.Center, contentAlignment = Alignment.Center,
) { ) {
val image = AnimatedImageVector.animatedVectorResource(R.drawable.anim_caret_down) val image = AnimatedImageVector.animatedVectorResource(R.drawable.animated_caret_flip)
Icon( Icon(
painter = rememberAnimatedVectorPainter(image, !expanded), painter = rememberAnimatedVectorPainter(image, !expanded),
contentDescription = stringResource( contentDescription = stringResource(
@@ -3,24 +3,22 @@ package eu.kanade.presentation.more
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
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.platform.LocalUriHandler import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import eu.kanade.presentation.more.settings.widget.SwitchPreferenceWidget 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.ui.more.DownloadQueueState import eu.kanade.tachiyomi.ui.more.DownloadQueueState
import mihon.icons.materialsymbols.MaterialSymbols import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.Help import mihon.icons.materialsymbols.automirroredrounded.Help
import mihon.icons.materialsymbols.automirroredrounded.Label import mihon.icons.materialsymbols.automirroredrounded.Label
import mihon.icons.materialsymbols.rounded.CloudOff import mihon.icons.materialsymbols.rounded.CloudOff
import mihon.icons.materialsymbols.rounded.Download import mihon.icons.materialsymbols.rounded.Download
import mihon.icons.materialsymbols.rounded.Eyeglasses2
import mihon.icons.materialsymbols.rounded.Info import mihon.icons.materialsymbols.rounded.Info
import mihon.icons.materialsymbols.rounded.QueryStats import mihon.icons.materialsymbols.rounded.QueryStats
import mihon.icons.materialsymbols.rounded.Settings import mihon.icons.materialsymbols.rounded.Settings
import mihon.icons.materialsymbols.rounded.Storage import mihon.icons.materialsymbols.rounded.Storage
import mihon.icons.materialsymbols.rounded.VolunteerActivism import mihon.icons.materialsymbols.roundedfilled.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
@@ -65,7 +63,7 @@ fun MoreScreen(
SwitchPreferenceWidget( SwitchPreferenceWidget(
title = stringResource(MR.strings.pref_incognito_mode), title = stringResource(MR.strings.pref_incognito_mode),
subtitle = stringResource(MR.strings.pref_incognito_mode_summary), subtitle = stringResource(MR.strings.pref_incognito_mode_summary),
icon = ImageVector.vectorResource(R.drawable.ic_glasses_24dp), icon = MaterialSymbols.Rounded.Eyeglasses2,
checked = incognitoMode, checked = incognitoMode,
onCheckedChanged = onIncognitoModeChange, onCheckedChanged = onIncognitoModeChange,
) )
@@ -136,7 +134,7 @@ fun MoreScreen(
item { item {
TextPreferenceWidget( TextPreferenceWidget(
title = stringResource(MR.strings.label_support_us), title = stringResource(MR.strings.label_support_us),
icon = MaterialSymbols.Rounded.VolunteerActivism, icon = MaterialSymbols.RoundedFilled.VolunteerActivism,
onPreferenceClick = onClickSupport, onPreferenceClick = onClickSupport,
) )
} }
@@ -18,7 +18,7 @@ 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.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.OpenInNew import mihon.icons.materialsymbols.automirroredrounded.OpenInNew
import mihon.icons.materialsymbols.rounded.NewReleases import mihon.icons.materialsymbols.rounded.Verified
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 = MaterialSymbols.Rounded.NewReleases, icon = MaterialSymbols.Rounded.Verified,
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) {
@@ -56,8 +56,8 @@ import mihon.app.di.appGraph
import mihon.icons.materialsymbols.MaterialSymbols import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.Help import mihon.icons.materialsymbols.automirroredrounded.Help
import mihon.icons.materialsymbols.rounded.Close import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.Visibility import mihon.icons.materialsymbols.roundedfilled.Visibility
import mihon.icons.materialsymbols.rounded.VisibilityOff import mihon.icons.materialsymbols.roundedfilled.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
@@ -250,9 +250,9 @@ object SettingsTrackingScreen : SearchableSettings {
IconButton(onClick = { hidePassword = !hidePassword }) { IconButton(onClick = { hidePassword = !hidePassword }) {
Icon( Icon(
imageVector = if (hidePassword) { imageVector = if (hidePassword) {
MaterialSymbols.Rounded.Visibility MaterialSymbols.RoundedFilled.Visibility
} else { } else {
MaterialSymbols.Rounded.VisibilityOff MaterialSymbols.RoundedFilled.VisibilityOff
}, },
contentDescription = null, contentDescription = null,
) )
@@ -20,8 +20,8 @@ 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.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Cancel import mihon.icons.materialsymbols.roundedfilled.Cancel
import mihon.icons.materialsymbols.rounded.Error import mihon.icons.materialsymbols.roundedfilled.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 = MaterialSymbols.Rounded.Error, contentDescription = null) Icon(imageVector = MaterialSymbols.RoundedFilled.Error, contentDescription = null)
} else { } else {
IconButton(onClick = { textFieldValue = TextFieldValue("") }) { IconButton(onClick = { textFieldValue = TextFieldValue("") }) {
Icon(imageVector = MaterialSymbols.Rounded.Cancel, contentDescription = null) Icon(imageVector = MaterialSymbols.RoundedFilled.Cancel, contentDescription = null)
} }
} }
}, },
@@ -27,7 +27,7 @@ import eu.kanade.tachiyomi.data.track.Tracker
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import mihon.icons.materialsymbols.MaterialSymbols import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Done import mihon.icons.materialsymbols.rounded.Check
import mihon.icons.materialsymbols.rounded.Refresh import mihon.icons.materialsymbols.rounded.Refresh
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.i18n.stringResource
@@ -107,7 +107,7 @@ fun TrackingPreferenceWidget(
} }
} }
Icon( Icon(
imageVector = MaterialSymbols.Rounded.Done, imageVector = MaterialSymbols.Rounded.Check,
modifier = Modifier modifier = Modifier
.padding(4.dp) .padding(4.dp)
.size(32.dp), .size(32.dp),
@@ -35,8 +35,8 @@ 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.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Info import mihon.icons.materialsymbols.rounded.Info
import mihon.icons.materialsymbols.rounded.Warning
import mihon.icons.materialsymbols.roundedfilled.CheckCircle import mihon.icons.materialsymbols.roundedfilled.CheckCircle
import mihon.icons.materialsymbols.roundedfilled.Warning
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
@@ -184,7 +184,7 @@ private fun ChapterGapWarning(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Icon( Icon(
imageVector = MaterialSymbols.Rounded.Warning, imageVector = MaterialSymbols.RoundedFilled.Warning,
tint = MaterialTheme.colorScheme.error, tint = MaterialTheme.colorScheme.error,
contentDescription = null, contentDescription = null,
) )
@@ -11,8 +11,6 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.tooling.preview.PreviewLightDark import androidx.compose.ui.tooling.preview.PreviewLightDark
import dev.icerock.moko.resources.StringResource import dev.icerock.moko.resources.StringResource
import eu.kanade.domain.manga.model.readingMode import eu.kanade.domain.manga.model.readingMode
@@ -68,7 +66,7 @@ private fun DialogContent(
selected = mode selected = mode
}, },
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
imageVector = ImageVector.vectorResource(mode.iconRes), imageVector = mode.icon,
title = stringResource(mode.stringRes), title = stringResource(mode.stringRes),
) )
} }
@@ -8,11 +8,12 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.res.painterResource
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.custommaterialsymbols.CustomMaterialSymbols
import mihon.icons.custommaterialsymbols.rounded.CropOff
import mihon.icons.materialsymbols.MaterialSymbols import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Crop
import mihon.icons.materialsymbols.rounded.Settings 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
@@ -36,7 +37,7 @@ fun ReaderBottomBar(
) { ) {
IconButton(onClick = onClickReadingMode) { IconButton(onClick = onClickReadingMode) {
Icon( Icon(
painter = painterResource(readingMode.iconRes), imageVector = readingMode.icon,
contentDescription = stringResource(MR.strings.viewer), contentDescription = stringResource(MR.strings.viewer),
) )
} }
@@ -50,7 +51,7 @@ fun ReaderBottomBar(
IconButton(onClick = onClickCropBorder) { IconButton(onClick = onClickCropBorder) {
Icon( Icon(
painter = painterResource(if (cropEnabled) R.drawable.ic_crop_24dp else R.drawable.ic_crop_off_24dp), imageVector = if (cropEnabled) MaterialSymbols.Rounded.Crop else CustomMaterialSymbols.Rounded.CropOff,
contentDescription = stringResource(MR.strings.pref_crop_borders), contentDescription = stringResource(MR.strings.pref_crop_borders),
) )
} }
@@ -59,7 +59,7 @@ import eu.kanade.tachiyomi.util.system.copyToClipboard
import kotlinx.datetime.toJavaLocalDate import kotlinx.datetime.toJavaLocalDate
import mihon.icons.materialsymbols.MaterialSymbols import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.MoreVert import mihon.icons.materialsymbols.rounded.MoreVert
import mihon.icons.materialsymbols.rounded.VisibilityOff import mihon.icons.materialsymbols.roundedfilled.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 = MaterialSymbols.Rounded.VisibilityOff, imageVector = MaterialSymbols.RoundedFilled.VisibilityOff,
contentDescription = stringResource(MR.strings.tracked_privately), contentDescription = stringResource(MR.strings.tracked_privately),
modifier = Modifier.size(14.dp), modifier = Modifier.size(14.dp),
) )
@@ -74,8 +74,8 @@ import kotlinx.coroutines.launch
import mihon.icons.materialsymbols.MaterialSymbols import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ArrowBack import mihon.icons.materialsymbols.automirroredrounded.ArrowBack
import mihon.icons.materialsymbols.rounded.Close import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.VisibilityOff
import mihon.icons.materialsymbols.roundedfilled.CheckCircle import mihon.icons.materialsymbols.roundedfilled.CheckCircle
import mihon.icons.materialsymbols.roundedfilled.VisibilityOff
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
@@ -189,7 +189,7 @@ fun TrackerSearch(
elevation = ButtonDefaults.elevatedButtonElevation(), elevation = ButtonDefaults.elevatedButtonElevation(),
) { ) {
Icon( Icon(
imageVector = MaterialSymbols.Rounded.VisibilityOff, imageVector = MaterialSymbols.RoundedFilled.VisibilityOff,
contentDescription = stringResource(MR.strings.action_toggle_private_on), contentDescription = stringResource(MR.strings.action_toggle_private_on),
) )
} }
@@ -0,0 +1,33 @@
package eu.kanade.presentation.util
import androidx.compose.animation.graphics.res.rememberAnimatedVectorPainter
import androidx.compose.animation.graphics.vector.AnimatedImageVector
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.SideEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.key
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.graphics.painter.Painter
/**
* Plays [enter] forwards when [atEnd] becomes true and [exit] forwards when it becomes false,
* instead of reversing a single animation. Nothing animates on the first composition.
*/
@Composable
fun rememberAnimatedVectorPainter(
enter: AnimatedImageVector,
exit: AnimatedImageVector,
atEnd: Boolean,
): Painter {
val composed = remember { mutableStateOf(false) }
SideEffect { composed.value = true }
return key(atEnd) {
// A fresh group per change, so the new animation starts from its first frame
var playing by remember { mutableStateOf(!composed.value) }
LaunchedEffect(Unit) { playing = true }
rememberAnimatedVectorPainter(if (atEnd) enter else exit, playing)
}
}
@@ -28,9 +28,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import cafe.adriel.voyager.core.stack.mutableStateStackOf import cafe.adriel.voyager.core.stack.mutableStateStackOf
import com.kevinnzou.web.AccompanistWebChromeClient import com.kevinnzou.web.AccompanistWebChromeClient
@@ -44,7 +42,6 @@ import eu.kanade.presentation.components.AppBar
import eu.kanade.presentation.components.AppBarActions import eu.kanade.presentation.components.AppBarActions
import eu.kanade.presentation.components.WarningBanner import eu.kanade.presentation.components.WarningBanner
import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.util.system.getHtml 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
@@ -53,6 +50,7 @@ import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ArrowBack import mihon.icons.materialsymbols.automirroredrounded.ArrowBack
import mihon.icons.materialsymbols.automirroredrounded.ArrowForward import mihon.icons.materialsymbols.automirroredrounded.ArrowForward
import mihon.icons.materialsymbols.rounded.Close import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.TabClose
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
@@ -278,7 +276,7 @@ fun WebViewScreenContent(
0, 0,
AppBar.Action( AppBar.Action(
title = stringResource(MR.strings.action_webview_close_tab), title = stringResource(MR.strings.action_webview_close_tab),
icon = ImageVector.vectorResource(R.drawable.ic_tab_close_24px), icon = MaterialSymbols.Rounded.TabClose,
onClick = popState, onClick = popState,
), ),
) )
+2 -1
View File
@@ -69,6 +69,7 @@ import tachiyomi.presentation.widget.WidgetManager
import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.InjektScope import uy.kohesive.injekt.api.InjektScope
import java.security.Security import java.security.Security
import mihon.icons.materialsymbols.R as MaterialSymbolsR
class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factory, GraphProvider<AppGraph> { class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factory, GraphProvider<AppGraph> {
@@ -138,7 +139,7 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor
) { ) {
setContentTitle(stringResource(MR.strings.pref_incognito_mode)) setContentTitle(stringResource(MR.strings.pref_incognito_mode))
setContentText(stringResource(MR.strings.notification_incognito_text)) setContentText(stringResource(MR.strings.notification_incognito_text))
setSmallIcon(R.drawable.ic_glasses_24dp) setSmallIcon(MaterialSymbolsR.drawable.rounded_eyeglasses_2)
setOngoing(true) setOngoing(true)
val pendingIntent = PendingIntent.getBroadcast( val pendingIntent = PendingIntent.getBroadcast(
@@ -19,6 +19,7 @@ import tachiyomi.core.common.storage.displayablePath
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import java.io.File import java.io.File
import kotlin.time.Duration.Companion.milliseconds import kotlin.time.Duration.Companion.milliseconds
import mihon.icons.materialsymbols.R as MaterialSymbolsR
@Inject @Inject
class BackupNotifier( class BackupNotifier(
@@ -79,7 +80,7 @@ class BackupNotifier(
clearActions() clearActions()
addAction( addAction(
R.drawable.ic_share_24dp, MaterialSymbolsR.drawable.rounded_share,
context.stringResource(MR.strings.action_share), context.stringResource(MR.strings.action_share),
NotificationReceiver.shareBackupPendingActivity(context, file.uri), NotificationReceiver.shareBackupPendingActivity(context, file.uri),
) )
@@ -111,7 +112,7 @@ class BackupNotifier(
clearActions() clearActions()
addAction( addAction(
R.drawable.ic_close_24dp, MaterialSymbolsR.drawable.rounded_close,
context.stringResource(MR.strings.action_cancel), context.stringResource(MR.strings.action_cancel),
NotificationReceiver.cancelRestorePendingBroadcast(context, Notifications.ID_RESTORE_PROGRESS), NotificationReceiver.cancelRestorePendingBroadcast(context, Notifications.ID_RESTORE_PROGRESS),
) )
@@ -173,7 +174,7 @@ class BackupNotifier(
val errorLogIntent = NotificationReceiver.openErrorLogPendingActivity(context, uri) val errorLogIntent = NotificationReceiver.openErrorLogPendingActivity(context, uri)
setContentIntent(errorLogIntent) setContentIntent(errorLogIntent)
addAction( addAction(
R.drawable.ic_folder_24dp, MaterialSymbolsR.drawable.rounded_filled_folder,
context.stringResource(MR.strings.action_show_errors), context.stringResource(MR.strings.action_show_errors),
errorLogIntent, errorLogIntent,
) )
@@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.util.system.notify
import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import java.util.regex.Pattern import java.util.regex.Pattern
import mihon.icons.materialsymbols.R as MaterialSymbolsR
/** /**
* DownloadNotifier is used to show notifications when downloading one or multiple chapters. * DownloadNotifier is used to show notifications when downloading one or multiple chapters.
@@ -79,12 +80,12 @@ class DownloadNotifier(
isDownloading = true isDownloading = true
// Pause action // Pause action
addAction( addAction(
R.drawable.ic_pause_24dp, MaterialSymbolsR.drawable.rounded_filled_pause,
context.stringResource(MR.strings.action_pause), context.stringResource(MR.strings.action_pause),
NotificationReceiver.pauseDownloadsPendingBroadcast(context), NotificationReceiver.pauseDownloadsPendingBroadcast(context),
) )
addAction( addAction(
R.drawable.ic_book_24dp, MaterialSymbolsR.drawable.rounded_book,
context.stringResource(MR.strings.action_show_manga), context.stringResource(MR.strings.action_show_manga),
NotificationReceiver.openEntryPendingActivity(context, download.manga.id), NotificationReceiver.openEntryPendingActivity(context, download.manga.id),
) )
@@ -129,20 +130,20 @@ class DownloadNotifier(
) { ) {
setContentTitle(context.stringResource(MR.strings.chapter_paused)) setContentTitle(context.stringResource(MR.strings.chapter_paused))
setContentText(context.stringResource(MR.strings.download_notifier_download_paused)) setContentText(context.stringResource(MR.strings.download_notifier_download_paused))
setSmallIcon(R.drawable.ic_pause_24dp) setSmallIcon(MaterialSymbolsR.drawable.rounded_filled_pause)
setLargeIcon(BitmapFactory.decodeResource(context.resources, R.mipmap.ic_launcher)) setLargeIcon(BitmapFactory.decodeResource(context.resources, R.mipmap.ic_launcher))
setOnlyAlertOnce(true) setOnlyAlertOnce(true)
// Open download manager when clicked // Open download manager when clicked
setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context)) setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context))
// Resume action // Resume action
addAction( addAction(
R.drawable.ic_play_arrow_24dp, MaterialSymbolsR.drawable.rounded_filled_play_arrow,
context.stringResource(MR.strings.action_resume), context.stringResource(MR.strings.action_resume),
NotificationReceiver.resumeDownloadsPendingBroadcast(context), NotificationReceiver.resumeDownloadsPendingBroadcast(context),
) )
// Clear action // Clear action
addAction( addAction(
R.drawable.ic_close_24dp, MaterialSymbolsR.drawable.rounded_close,
context.stringResource(MR.strings.action_cancel_all), context.stringResource(MR.strings.action_cancel_all),
NotificationReceiver.clearDownloadsPendingBroadcast(context), NotificationReceiver.clearDownloadsPendingBroadcast(context),
) )
@@ -177,12 +178,12 @@ class DownloadNotifier(
) { ) {
setContentTitle(context.stringResource(MR.strings.download_notifier_downloader_title)) setContentTitle(context.stringResource(MR.strings.download_notifier_downloader_title))
setStyle(NotificationCompat.BigTextStyle().bigText(reason)) setStyle(NotificationCompat.BigTextStyle().bigText(reason))
setSmallIcon(R.drawable.ic_warning_white_24dp) setSmallIcon(MaterialSymbolsR.drawable.rounded_filled_warning)
setAutoCancel(true) setAutoCancel(true)
setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context)) setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context))
if (mangaId != null) { if (mangaId != null) {
addAction( addAction(
R.drawable.ic_book_24dp, MaterialSymbolsR.drawable.rounded_book,
context.stringResource(MR.strings.action_show_manga), context.stringResource(MR.strings.action_show_manga),
NotificationReceiver.openEntryPendingActivity(context, mangaId), NotificationReceiver.openEntryPendingActivity(context, mangaId),
) )
@@ -213,11 +214,11 @@ class DownloadNotifier(
mangaTitle?.plus(": $chapter") ?: context.stringResource(MR.strings.download_notifier_downloader_title), mangaTitle?.plus(": $chapter") ?: context.stringResource(MR.strings.download_notifier_downloader_title),
) )
setContentText(error ?: context.stringResource(MR.strings.download_notifier_unknown_error)) setContentText(error ?: context.stringResource(MR.strings.download_notifier_unknown_error))
setSmallIcon(R.drawable.ic_warning_white_24dp) setSmallIcon(MaterialSymbolsR.drawable.rounded_filled_warning)
setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context)) setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context))
if (mangaId != null) { if (mangaId != null) {
addAction( addAction(
R.drawable.ic_book_24dp, MaterialSymbolsR.drawable.rounded_book,
context.stringResource(MR.strings.action_show_manga), context.stringResource(MR.strings.action_show_manga),
NotificationReceiver.openEntryPendingActivity(context, mangaId), NotificationReceiver.openEntryPendingActivity(context, mangaId),
) )
@@ -40,6 +40,7 @@ import tachiyomi.domain.source.service.SourceManager
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import java.math.RoundingMode import java.math.RoundingMode
import java.text.NumberFormat import java.text.NumberFormat
import mihon.icons.materialsymbols.R as MaterialSymbolsR
@Inject @Inject
class LibraryUpdateNotifier( class LibraryUpdateNotifier(
@@ -73,11 +74,15 @@ class LibraryUpdateNotifier(
val progressNotificationBuilder by lazy { val progressNotificationBuilder by lazy {
context.notificationBuilder(Notifications.CHANNEL_LIBRARY_PROGRESS) { context.notificationBuilder(Notifications.CHANNEL_LIBRARY_PROGRESS) {
setContentTitle(context.stringResource(MR.strings.app_name)) setContentTitle(context.stringResource(MR.strings.app_name))
setSmallIcon(R.drawable.ic_refresh_24dp) setSmallIcon(MaterialSymbolsR.drawable.rounded_refresh)
setLargeIcon(notificationBitmap) setLargeIcon(notificationBitmap)
setOngoing(true) setOngoing(true)
setOnlyAlertOnce(true) setOnlyAlertOnce(true)
addAction(R.drawable.ic_close_24dp, context.stringResource(MR.strings.action_cancel), cancelIntent) addAction(
MaterialSymbolsR.drawable.rounded_close,
context.stringResource(MR.strings.action_cancel),
cancelIntent,
)
} }
} }
@@ -131,7 +136,7 @@ class LibraryUpdateNotifier(
setStyle( setStyle(
NotificationCompat.BigTextStyle().bigText(context.stringResource(MR.strings.notification_size_warning)), NotificationCompat.BigTextStyle().bigText(context.stringResource(MR.strings.notification_size_warning)),
) )
setSmallIcon(R.drawable.ic_warning_white_24dp) setSmallIcon(MaterialSymbolsR.drawable.rounded_filled_warning)
setTimeoutAfter(Downloader.WARNING_NOTIF_TIMEOUT_MS) setTimeoutAfter(Downloader.WARNING_NOTIF_TIMEOUT_MS)
setContentIntent(NotificationHandler.openUrl(context, HELP_WARNING_URL)) setContentIntent(NotificationHandler.openUrl(context, HELP_WARNING_URL))
} }
@@ -246,7 +251,7 @@ class LibraryUpdateNotifier(
// Mark chapters as read action // Mark chapters as read action
addAction( addAction(
R.drawable.ic_done_24dp, MaterialSymbolsR.drawable.rounded_check,
context.stringResource(MR.strings.action_mark_as_read), context.stringResource(MR.strings.action_mark_as_read),
NotificationReceiver.markAsReadPendingBroadcast( NotificationReceiver.markAsReadPendingBroadcast(
context, context,
@@ -257,7 +262,7 @@ class LibraryUpdateNotifier(
) )
// View chapters action // View chapters action
addAction( addAction(
R.drawable.ic_book_24dp, MaterialSymbolsR.drawable.rounded_book,
context.stringResource(MR.strings.action_view_chapters), context.stringResource(MR.strings.action_view_chapters),
NotificationReceiver.openChapterPendingActivity( NotificationReceiver.openChapterPendingActivity(
context, context,
@@ -5,7 +5,6 @@ import androidx.core.app.NotificationCompat
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.Inject import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.SingleIn import dev.zacsweers.metro.SingleIn
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.core.security.SecurityPreferences import eu.kanade.tachiyomi.core.security.SecurityPreferences
import eu.kanade.tachiyomi.data.notification.NotificationReceiver import eu.kanade.tachiyomi.data.notification.NotificationReceiver
import eu.kanade.tachiyomi.data.notification.Notifications import eu.kanade.tachiyomi.data.notification.Notifications
@@ -13,6 +12,7 @@ import eu.kanade.tachiyomi.util.system.cancelNotification
import eu.kanade.tachiyomi.util.system.notify import eu.kanade.tachiyomi.util.system.notify
import tachiyomi.core.common.i18n.pluralStringResource import tachiyomi.core.common.i18n.pluralStringResource
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import mihon.icons.materialsymbols.R as MaterialSymbolsR
@Inject @Inject
@SingleIn(AppScope::class) @SingleIn(AppScope::class)
@@ -37,7 +37,7 @@ class ExtensionUpdateNotifier(
setContentText(extNames) setContentText(extNames)
setStyle(NotificationCompat.BigTextStyle().bigText(extNames)) setStyle(NotificationCompat.BigTextStyle().bigText(extNames))
} }
setSmallIcon(R.drawable.ic_extension_24dp) setSmallIcon(MaterialSymbolsR.drawable.rounded_filled_extension)
setContentIntent(NotificationReceiver.openExtensionsPendingActivity(context)) setContentIntent(NotificationReceiver.openExtensionsPendingActivity(context))
setAutoCancel(true) setAutoCancel(true)
} }
@@ -1,7 +1,6 @@
package eu.kanade.tachiyomi.ui.browse package eu.kanade.tachiyomi.ui.browse
import androidx.compose.animation.graphics.res.animatedVectorResource import androidx.compose.animation.graphics.res.animatedVectorResource
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.pager.rememberPagerState import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@@ -15,6 +14,7 @@ import cafe.adriel.voyager.navigator.tab.TabOptions
import dev.zacsweers.metrox.viewmodel.metroViewModel import dev.zacsweers.metrox.viewmodel.metroViewModel
import eu.kanade.presentation.components.TabbedScreen import eu.kanade.presentation.components.TabbedScreen
import eu.kanade.presentation.util.Tab import eu.kanade.presentation.util.Tab
import eu.kanade.presentation.util.rememberAnimatedVectorPainter
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.ui.browse.extension.ExtensionsViewModel import eu.kanade.tachiyomi.ui.browse.extension.ExtensionsViewModel
import eu.kanade.tachiyomi.ui.browse.extension.extensionsTab import eu.kanade.tachiyomi.ui.browse.extension.extensionsTab
@@ -35,11 +35,12 @@ data object BrowseTab : Tab {
@Composable @Composable
get() { get() {
val isSelected = LocalTabNavigator.current.current.key == key val isSelected = LocalTabNavigator.current.current.key == key
val image = AnimatedImageVector.animatedVectorResource(R.drawable.anim_browse_enter) val enter = AnimatedImageVector.animatedVectorResource(R.drawable.animated_browse_enter)
val exit = AnimatedImageVector.animatedVectorResource(R.drawable.animated_browse_exit)
return TabOptions( return TabOptions(
index = 3u, index = 3u,
title = stringResource(MR.strings.browse), title = stringResource(MR.strings.browse),
icon = rememberAnimatedVectorPainter(image, isSelected), icon = rememberAnimatedVectorPainter(enter, exit, isSelected),
) )
} }
@@ -51,7 +51,7 @@ 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.MaterialSymbols
import mihon.icons.materialsymbols.rounded.FilterList import mihon.icons.materialsymbols.rounded.FilterList
import mihon.icons.materialsymbols.rounded.NewReleases import mihon.icons.materialsymbols.rounded.Verified
import mihon.icons.materialsymbols.roundedfilled.Favorite 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
@@ -177,7 +177,7 @@ data class BrowseSourceScreen(
}, },
leadingIcon = { leadingIcon = {
Icon( Icon(
imageVector = MaterialSymbols.Rounded.NewReleases, imageVector = MaterialSymbols.Rounded.Verified,
contentDescription = null, contentDescription = null,
modifier = Modifier modifier = Modifier
.size(FilterChipDefaults.IconSize), .size(FilterChipDefaults.IconSize),
@@ -46,7 +46,7 @@ data object HistoryTab : Tab {
@Composable @Composable
get() { get() {
val isSelected = LocalTabNavigator.current.current.key == key val isSelected = LocalTabNavigator.current.current.key == key
val image = AnimatedImageVector.animatedVectorResource(R.drawable.anim_history_enter) val image = AnimatedImageVector.animatedVectorResource(R.drawable.animated_history)
return TabOptions( return TabOptions(
index = 2u, index = 2u,
title = stringResource(MR.strings.label_recent_manga), title = stringResource(MR.strings.label_recent_manga),
@@ -68,7 +68,7 @@ data object LibraryTab : Tab {
@Composable @Composable
get() { get() {
val isSelected = LocalTabNavigator.current.current.key == key val isSelected = LocalTabNavigator.current.current.key == key
val image = AnimatedImageVector.animatedVectorResource(R.drawable.anim_library_enter) val image = AnimatedImageVector.animatedVectorResource(R.drawable.animated_library)
return TabOptions( return TabOptions(
index = 0u, index = 0u,
title = stringResource(MR.strings.label_library), title = stringResource(MR.strings.label_library),
@@ -113,7 +113,7 @@ import mihon.domain.database.repository.DatabaseRepository
import mihon.feature.support.SupportUsScreen import mihon.feature.support.SupportUsScreen
import mihon.icons.materialsymbols.MaterialSymbols import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.OpenInNew import mihon.icons.materialsymbols.automirroredrounded.OpenInNew
import mihon.icons.materialsymbols.rounded.VolunteerActivism import mihon.icons.materialsymbols.roundedfilled.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
@@ -437,7 +437,7 @@ class MainActivity : BaseActivity() {
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.padding.small), horizontalArrangement = Arrangement.spacedBy(MaterialTheme.padding.small),
) { ) {
Icon( Icon(
imageVector = MaterialSymbols.Rounded.VolunteerActivism, imageVector = MaterialSymbols.RoundedFilled.VolunteerActivism,
contentDescription = null, contentDescription = null,
) )
Text( Text(
@@ -72,7 +72,7 @@ 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.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Delete import mihon.icons.materialsymbols.roundedfilled.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 = MaterialSymbols.Rounded.Delete, imageVector = MaterialSymbols.RoundedFilled.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 = MaterialSymbols.Rounded.Delete, imageVector = MaterialSymbols.RoundedFilled.Delete,
contentDescription = null, contentDescription = null,
) )
}, },
@@ -45,7 +45,7 @@ data object MoreTab : Tab {
@Composable @Composable
get() { get() {
val isSelected = LocalTabNavigator.current.current.key == key val isSelected = LocalTabNavigator.current.current.key == key
val image = AnimatedImageVector.animatedVectorResource(R.drawable.anim_more_enter) val image = AnimatedImageVector.animatedVectorResource(R.drawable.animated_more)
return TabOptions( return TabOptions(
index = 4u, index = 4u,
title = stringResource(MR.strings.label_more), title = stringResource(MR.strings.label_more),
@@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.util.system.notificationBuilder
import eu.kanade.tachiyomi.util.system.notify import eu.kanade.tachiyomi.util.system.notify
import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
import mihon.icons.materialsymbols.R as MaterialSymbolsR
/** /**
* Class used to show BigPictureStyle notifications * Class used to show BigPictureStyle notifications
@@ -69,7 +70,7 @@ class SaveImageNotifier(private val context: Context) {
private fun showCompleteNotification(uri: Uri, image: Bitmap?) { private fun showCompleteNotification(uri: Uri, image: Bitmap?) {
with(notificationBuilder) { with(notificationBuilder) {
setContentTitle(context.stringResource(MR.strings.picture_saved)) setContentTitle(context.stringResource(MR.strings.picture_saved))
setSmallIcon(R.drawable.ic_photo_24dp) setSmallIcon(MaterialSymbolsR.drawable.rounded_filled_photo)
image?.let { setStyle(NotificationCompat.BigPictureStyle().bigPicture(it)) } image?.let { setStyle(NotificationCompat.BigPictureStyle().bigPicture(it)) }
setLargeIcon(image) setLargeIcon(image)
setAutoCancel(true) setAutoCancel(true)
@@ -80,7 +81,7 @@ class SaveImageNotifier(private val context: Context) {
setContentIntent(NotificationHandler.openImagePendingActivity(context, uri)) setContentIntent(NotificationHandler.openImagePendingActivity(context, uri))
// Share action // Share action
addAction( addAction(
R.drawable.ic_share_24dp, MaterialSymbolsR.drawable.rounded_share,
context.stringResource(MR.strings.action_share), context.stringResource(MR.strings.action_share),
NotificationReceiver.shareImagePendingBroadcast(context, uri), NotificationReceiver.shareImagePendingBroadcast(context, uri),
) )
@@ -4,11 +4,11 @@ import android.content.pm.ActivityInfo
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.MaterialSymbols
import mihon.icons.materialsymbols.rounded.ScreenLockLandscape import mihon.icons.materialsymbols.rounded.Mobile
import mihon.icons.materialsymbols.rounded.ScreenLockPortrait import mihon.icons.materialsymbols.rounded.MobileLandscape
import mihon.icons.materialsymbols.rounded.ScreenRotation import mihon.icons.materialsymbols.rounded.MobileLockLandscape
import mihon.icons.materialsymbols.rounded.StayCurrentLandscape import mihon.icons.materialsymbols.rounded.MobileLockPortrait
import mihon.icons.materialsymbols.rounded.StayCurrentPortrait import mihon.icons.materialsymbols.rounded.MobileRotate
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,
MaterialSymbols.Rounded.ScreenRotation, MaterialSymbols.Rounded.MobileRotate,
0x00000000, 0x00000000,
), ),
FREE( FREE(
ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED,
MR.strings.rotation_free, MR.strings.rotation_free,
MaterialSymbols.Rounded.ScreenRotation, MaterialSymbols.Rounded.MobileRotate,
0x00000008, 0x00000008,
), ),
PORTRAIT( PORTRAIT(
ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT, ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT,
MR.strings.rotation_portrait, MR.strings.rotation_portrait,
MaterialSymbols.Rounded.StayCurrentPortrait, MaterialSymbols.Rounded.Mobile,
0x00000010, 0x00000010,
), ),
LANDSCAPE( LANDSCAPE(
ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE, ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE,
MR.strings.rotation_landscape, MR.strings.rotation_landscape,
MaterialSymbols.Rounded.StayCurrentLandscape, MaterialSymbols.Rounded.MobileLandscape,
0x00000018, 0x00000018,
), ),
LOCKED_PORTRAIT( LOCKED_PORTRAIT(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT,
MR.strings.rotation_force_portrait, MR.strings.rotation_force_portrait,
MaterialSymbols.Rounded.ScreenLockPortrait, MaterialSymbols.Rounded.MobileLockPortrait,
0x00000020, 0x00000020,
), ),
LOCKED_LANDSCAPE( LOCKED_LANDSCAPE(
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE, ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE,
MR.strings.rotation_force_landscape, MR.strings.rotation_force_landscape,
MaterialSymbols.Rounded.ScreenLockLandscape, MaterialSymbols.Rounded.MobileLockLandscape,
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,
MaterialSymbols.Rounded.StayCurrentPortrait, MaterialSymbols.Rounded.Mobile,
0x00000030, 0x00000030,
), ),
; ;
@@ -1,8 +1,7 @@
package eu.kanade.tachiyomi.ui.reader.setting package eu.kanade.tachiyomi.ui.reader.setting
import androidx.annotation.DrawableRes import androidx.compose.ui.graphics.vector.ImageVector
import dev.icerock.moko.resources.StringResource import dev.icerock.moko.resources.StringResource
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.ui.reader.ReaderActivity import eu.kanade.tachiyomi.ui.reader.ReaderActivity
import eu.kanade.tachiyomi.ui.reader.viewer.Viewer import eu.kanade.tachiyomi.ui.reader.viewer.Viewer
import eu.kanade.tachiyomi.ui.reader.viewer.pager.L2RPagerViewer import eu.kanade.tachiyomi.ui.reader.viewer.pager.L2RPagerViewer
@@ -12,47 +11,55 @@ import eu.kanade.tachiyomi.ui.reader.viewer.webgpu.WebGpuViewer
import eu.kanade.tachiyomi.ui.reader.viewer.webgpu.WebGpuViewerContinuous import eu.kanade.tachiyomi.ui.reader.viewer.webgpu.WebGpuViewerContinuous
import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer
import mihon.app.di.appGraph import mihon.app.di.appGraph
import mihon.icons.custommaterialsymbols.CustomMaterialSymbols
import mihon.icons.custommaterialsymbols.rounded.ReaderLeftToRight
import mihon.icons.custommaterialsymbols.rounded.ReaderLongStrip
import mihon.icons.custommaterialsymbols.rounded.ReaderLongStripGaps
import mihon.icons.custommaterialsymbols.rounded.ReaderRightToLeft
import mihon.icons.custommaterialsymbols.rounded.ReaderVertical
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.MobileGear
import tachiyomi.i18n.MR import tachiyomi.i18n.MR
enum class ReadingMode( enum class ReadingMode(
val stringRes: StringResource, val stringRes: StringResource,
@DrawableRes val iconRes: Int, val icon: ImageVector,
val flagValue: Int, val flagValue: Int,
val direction: Direction? = null, val direction: Direction? = null,
val type: ViewerType? = null, val type: ViewerType? = null,
) { ) {
DEFAULT(MR.strings.label_default, R.drawable.ic_reader_default_24dp, 0x00000000), DEFAULT(MR.strings.label_default, MaterialSymbols.Rounded.MobileGear, 0x00000000),
LEFT_TO_RIGHT( LEFT_TO_RIGHT(
MR.strings.left_to_right_viewer, MR.strings.left_to_right_viewer,
R.drawable.ic_reader_ltr_24dp, CustomMaterialSymbols.Rounded.ReaderLeftToRight,
0x00000001, 0x00000001,
Direction.Horizontal, Direction.Horizontal,
ViewerType.Pager, ViewerType.Pager,
), ),
RIGHT_TO_LEFT( RIGHT_TO_LEFT(
MR.strings.right_to_left_viewer, MR.strings.right_to_left_viewer,
R.drawable.ic_reader_rtl_24dp, CustomMaterialSymbols.Rounded.ReaderRightToLeft,
0x00000002, 0x00000002,
Direction.Horizontal, Direction.Horizontal,
ViewerType.Pager, ViewerType.Pager,
), ),
VERTICAL( VERTICAL(
MR.strings.vertical_viewer, MR.strings.vertical_viewer,
R.drawable.ic_reader_vertical_24dp, CustomMaterialSymbols.Rounded.ReaderVertical,
0x00000003, 0x00000003,
Direction.Vertical, Direction.Vertical,
ViewerType.Pager, ViewerType.Pager,
), ),
WEBTOON( WEBTOON(
MR.strings.webtoon_viewer, MR.strings.webtoon_viewer,
R.drawable.ic_reader_webtoon_24dp, CustomMaterialSymbols.Rounded.ReaderLongStrip,
0x00000004, 0x00000004,
Direction.Vertical, Direction.Vertical,
ViewerType.Webtoon, ViewerType.Webtoon,
), ),
CONTINUOUS_VERTICAL( CONTINUOUS_VERTICAL(
MR.strings.vertical_plus_viewer, MR.strings.vertical_plus_viewer,
R.drawable.ic_reader_continuous_vertical_24dp, CustomMaterialSymbols.Rounded.ReaderLongStripGaps,
0x00000005, 0x00000005,
Direction.Vertical, Direction.Vertical,
ViewerType.Webtoon, ViewerType.Webtoon,
@@ -38,7 +38,7 @@ data object UpdatesTab : Tab {
@Composable @Composable
get() { get() {
val isSelected = LocalTabNavigator.current.current.key == key val isSelected = LocalTabNavigator.current.current.key == key
val image = AnimatedImageVector.animatedVectorResource(R.drawable.anim_updates_enter) val image = AnimatedImageVector.animatedVectorResource(R.drawable.animated_updates)
return TabOptions( return TabOptions(
index = 1u, index = 1u,
title = stringResource(MR.strings.label_recent_updates), title = stringResource(MR.strings.label_recent_updates),
@@ -34,7 +34,7 @@ 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.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Check import mihon.icons.materialsymbols.rounded.Check
import mihon.icons.materialsymbols.rounded.Warning import mihon.icons.materialsymbols.roundedfilled.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
@@ -226,7 +226,7 @@ private fun MigrationSheetWarningItem(
ListItem( ListItem(
leadingContent = { leadingContent = {
Icon( Icon(
imageVector = MaterialSymbols.Rounded.Warning, imageVector = MaterialSymbols.RoundedFilled.Warning,
contentDescription = null, contentDescription = null,
tint = MaterialTheme.colorScheme.active, tint = MaterialTheme.colorScheme.active,
) )
@@ -49,10 +49,10 @@ 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.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ArrowForward import mihon.icons.materialsymbols.automirroredrounded.ArrowForward
import mihon.icons.materialsymbols.rounded.Check
import mihon.icons.materialsymbols.rounded.Close import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.ContentCopy import mihon.icons.materialsymbols.rounded.ContentCopy
import mihon.icons.materialsymbols.rounded.CopyAll import mihon.icons.materialsymbols.rounded.CopyAll
import mihon.icons.materialsymbols.rounded.Done
import mihon.icons.materialsymbols.rounded.DoneAll import mihon.icons.materialsymbols.rounded.DoneAll
import mihon.icons.materialsymbols.rounded.MoreVert import mihon.icons.materialsymbols.rounded.MoreVert
import tachiyomi.domain.manga.model.Manga import tachiyomi.domain.manga.model.Manga
@@ -106,7 +106,7 @@ fun MigrationListScreenContent(
icon = if (items.size == icon = if (items.size ==
1 1
) { ) {
MaterialSymbols.Rounded.Done MaterialSymbols.Rounded.Check
} else { } else {
MaterialSymbols.Rounded.DoneAll MaterialSymbols.Rounded.DoneAll
}, },
@@ -1,104 +0,0 @@
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="browse_enter"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<group
android:name="main_parent"
android:pivotX="12"
android:pivotY="12">
<group
android:name="group"
android:pivotX="12"
android:pivotY="12">
<path
android:name="dot"
android:fillColor="#000000"
android:pathData="M 12 10.9 C 12.61 10.9 13.1 11.39 13.1 12 C 13.1 12.61 12.61 13.1 12 13.1 C 11.39 13.1 10.9 12.61 10.9 12 C 10.9 11.39 11.39 10.9 12 10.9 Z" />
</group>
<clip-path
android:name="dot_mask"
android:pathData="M 0.188 0.188 L 0.188 24 L 23.938 24 L 23.938 0.188 L 0.188 0.188 Z M 12 10.9 C 12.61 10.9 13.1 11.39 13.1 12 C 13.1 12.61 12.61 13.1 12 13.1 C 11.39 13.1 10.9 12.61 10.9 12 C 10.9 11.39 11.39 10.9 12 10.9 Z" />
<path
android:name="compass"
android:fillColor="#000000"
android:pathData="M 6.5 17.5 L 14.01 14.01 L 17.5 6.5 L 9.99 9.99 L 6.5 17.5 Z M 12 10.9 C 12.61 10.9 13.1 11.39 13.1 12 C 13.1 12.61 12.61 13.1 12 13.1 C 11.39 13.1 10.9 12.61 10.9 12 C 10.9 11.39 11.39 10.9 12 10.9 Z" />
<group
android:name="ring_parent"
android:pivotX="12"
android:pivotY="12"
android:scaleX="0.833"
android:scaleY="0.833">
<path
android:name="ring"
android:fillColor="#000000"
android:pathData="M 12 0 C 8.819 0 5.765 1.265 3.515 3.515 C 1.265 5.765 0 8.819 0 12 C 0 15.181 1.265 18.235 3.515 20.485 C 5.765 22.735 8.819 24 12 24 C 15.181 24 18.235 22.735 20.485 20.485 C 22.735 18.235 24 15.181 24 12 C 24 8.819 22.735 5.765 20.485 3.515 C 18.235 1.265 15.181 0 12 0 Z M 12 21.6 C 9.455 21.6 7.012 20.588 5.212 18.788 C 3.412 16.988 2.4 14.545 2.4 12 C 2.4 9.455 3.412 7.012 5.212 5.212 C 7.012 3.412 9.455 2.4 12 2.4 C 14.545 2.4 16.988 3.412 18.788 5.212 C 20.588 7.012 21.6 9.455 21.6 12 C 21.6 14.545 20.588 16.988 18.788 18.788 C 16.988 20.588 14.545 21.6 12 21.6 Z"
android:strokeAlpha="0" />
</group>
<group android:name="group_1" />
</group>
</vector>
</aapt:attr>
<target android:name="compass">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="300"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="pathData"
android:valueFrom="M 9.99 9.99 C 9.408 11.242 8.827 12.493 8.245 13.745 C 7.663 14.997 7.082 16.248 6.5 17.5 C 6.5 17.5 6.5 17.5 6.5 17.5 C 9.003 16.337 11.507 15.173 14.01 14.01 C 15.173 11.507 16.337 9.003 17.5 6.5 C 14.997 7.663 12.493 8.827 9.99 9.99 M 12 10.9 C 11.39 10.9 10.9 11.39 10.9 12 C 10.9 12.305 11.023 12.58 11.221 12.779 C 11.42 12.977 11.695 13.1 12 13.1 C 12.61 13.1 13.1 12.61 13.1 12 C 13.1 11.39 12.61 10.9 12 10.9 L 12 10.9 M 12 12 L 12 12 L 12 12 L 12 12 L 12 12 L 12 12 L 12 12 M 12 12 L 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12"
android:valueTo="M 12 2 C 6.48 2 2 6.48 2 12 C 2 17.141 5.886 21.38 10.878 21.938 C 11.247 21.979 11.621 22 12 22 C 17.52 22 22 17.52 22 12 C 22 6.48 17.52 2 12 2 C 12 2 12 2 12 2 M 12 10.9 C 11.695 10.9 11.42 11.023 11.221 11.221 C 11.023 11.42 10.9 11.695 10.9 12 C 10.9 12.61 11.39 13.1 12 13.1 C 12.61 13.1 13.1 12.61 13.1 12 C 13.1 11.39 12.61 10.9 12 10.9 L 12 10.9 M 14.19 14.19 L 6 18 L 6 18 L 9.81 9.81 L 18 6 L 14.19 14.19 L 14.19 14.19 M 12 12 L 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12"
android:valueType="pathType" />
</aapt:attr>
</target>
<target android:name="main_parent">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="300"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="rotation"
android:valueFrom="0"
android:valueTo="180"
android:valueType="floatType" />
</aapt:attr>
</target>
<target android:name="group">
<aapt:attr name="android:animation">
<set>
<objectAnimator
android:duration="66"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="scaleX"
android:valueFrom="0"
android:valueTo="0"
android:valueType="floatType" />
<objectAnimator
android:duration="100"
android:interpolator="@android:anim/decelerate_interpolator"
android:propertyName="scaleX"
android:startOffset="66"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType" />
<objectAnimator
android:duration="66"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="scaleY"
android:valueFrom="0"
android:valueTo="0"
android:valueType="floatType" />
<objectAnimator
android:duration="100"
android:interpolator="@android:anim/decelerate_interpolator"
android:propertyName="scaleY"
android:startOffset="66"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType" />
</set>
</aapt:attr>
</target>
</animated-vector>
@@ -1,36 +0,0 @@
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="history_enter"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:name="clock"
android:fillColor="#000000"
android:pathData="M 12 8 L 12 13 L 16.28 15.54 L 17 14.33 L 13.5 12.25 L 13.5 8 L 12 8 Z" />
<group
android:name="arrow_head"
android:pivotX="13"
android:pivotY="12">
<path
android:name="arrow"
android:fillColor="#000000"
android:pathData="M 13 3 C 8.03 3 4 7.03 4 12 L 1 12 L 4.89 15.89 L 4.96 16.03 L 9 12 L 6 12 C 6 8.13 9.13 5 13 5 C 16.87 5 20 8.13 20 12 C 20 15.87 16.87 19 13 19 C 11.07 19 9.32 18.21 8.06 16.94 L 6.64 18.36 C 8.27 19.99 10.51 21 13 21 C 17.97 21 22 16.97 22 12 C 22 7.03 17.97 3 13 3 Z M 13 3 Z" />
</group>
</vector>
</aapt:attr>
<target android:name="arrow_head">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="rotation"
android:valueFrom="360"
android:valueTo="0"
android:valueType="floatType" />
</aapt:attr>
</target>
</animated-vector>
@@ -1,31 +0,0 @@
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="vector"
android:width="24dp"
android:height="24dp"
android:viewportWidth="1080"
android:viewportHeight="1080">
<path
android:name="bookmark"
android:fillColor="#000000"
android:pathData="M 899.84 90.84 C 899.84 90.84 360.3 90.84 360.3 90.84 C 310.84 90.84 270.38 131.3 270.38 180.76 C 270.38 180.76 270.38 720.31 270.38 720.31 C 270.38 769.76 310.84 810.23 360.3 810.23 C 360.3 810.23 899.84 810.23 899.84 810.23 C 949.3 810.23 989.77 769.76 989.77 720.31 C 989.77 720.31 989.77 180.76 989.77 180.76 C 989.77 131.3 949.3 90.84 899.84 90.84 M 899.84 720.31 C 899.84 720.31 360.3 720.31 360.3 720.31 C 360.3 720.31 360.3 180.76 360.3 180.76 C 360.3 180.76 585.11 180.76 585.11 180.76 C 585.11 180.76 585.11 585.42 585.11 585.42 C 585.11 585.42 720 484.26 720 484.26 C 720 484.26 854.88 585.42 854.88 585.42 C 854.88 585.42 854.88 180.76 854.88 180.76 C 854.88 180.76 899.84 180.76 899.84 180.76 C 899.84 180.76 899.84 720.31 899.84 720.31" />
<path
android:name="angle"
android:fillColor="#000000"
android:pathData="M 180.45 270.69 C 180.45 270.69 90.53 270.69 90.53 270.69 C 90.53 270.69 90.53 900.15 90.53 900.15 C 90.53 949.61 131 990.08 180.45 990.08 C 180.45 990.08 809.92 990.08 809.92 990.08 C 809.92 990.08 809.92 900.15 809.92 900.15 C 809.92 900.15 180.45 900.15 180.45 900.15 C 180.45 900.15 180.45 270.69 180.45 270.69" />
</vector>
</aapt:attr>
<target android:name="bookmark">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="300"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="pathData"
android:valueFrom="M 634.454 90.84 C 543.069 90.84 451.685 90.84 360.3 90.84 C 310.84 90.84 270.38 131.3 270.38 180.76 C 270.38 360.61 270.38 540.46 270.38 720.31 C 270.38 769.76 310.84 810.23 360.3 810.23 C 540.147 810.23 719.993 810.23 899.84 810.23 C 949.3 810.23 989.77 769.76 989.77 720.31 C 989.77 540.46 989.77 360.61 989.77 180.76 C 989.77 131.3 949.3 90.84 899.84 90.84 C 811.378 90.84 722.916 90.84 634.454 90.84 M 899.84 720.31 C 834.876 720.31 769.913 720.31 704.949 720.31 C 590.066 720.31 475.183 720.31 360.3 720.31 C 360.3 540.46 360.3 360.61 360.3 180.76 C 435.237 180.76 510.173 180.76 585.11 180.76 L 585.11 180.76 C 585.11 315.647 585.11 450.533 585.11 585.42 C 630.073 551.7 675.037 517.98 720 484.26 C 764.96 517.98 809.92 551.7 854.88 585.42 C 854.88 450.533 854.88 315.647 854.88 180.76 C 869.867 180.76 884.853 180.76 899.84 180.76 C 899.84 360.61 899.84 540.46 899.84 720.31"
android:valueTo="M 900 90 C 720 90 540 90 360 90 C 310.5 90 270 130.5 270 180 C 270 360 270 540 270 720 C 270 769.5 310.5 810 360 810 C 540 810 720 810 900 810 C 949.5 810 990 769.5 990 720 C 990 540 990 360 990 180 C 990 130.5 949.5 90 900 90 C 900 90 900 90 900 90 M 900 540 C 862.5 517.5 825 495 787.5 472.5 C 750 495 712.5 517.5 675 540 C 675 540 675 540 675 540 C 675 471.351 675 402.701 675 334.052 L 675 180 C 675 180 675 180 675 180 C 713.708 180 752.416 180 791.124 180 C 827.416 180 863.708 180 900 180 C 900 233.194 900 286.387 900 339.581 C 900 406.387 900 473.194 900 540 C 900 540 900 540 900 540"
android:valueType="pathType" />
</aapt:attr>
</target>
</animated-vector>
@@ -1,27 +0,0 @@
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="updates_enter"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:name="updates_filled"
android:fillColor="#000000"
android:pathData="M 23 12 L 20.56 9.22 L 20.9 5.54 L 17.29 4.72 L 15.4 1.54 L 12 3 L 8.6 1.54 L 6.71 4.72 L 3.1 5.53 L 3.44 9.21 L 1 12 L 3.44 14.78 L 3.1 18.47 L 6.71 19.29 L 8.6 22.47 L 12 21 L 15.4 22.46 L 17.29 19.28 L 20.9 18.46 L 20.56 14.78 L 23 12 Z M 9.42 19.93 L 7.99 17.52 L 5.25 16.9 L 5.51 14.1 L 3.66 12 L 5.51 9.88 L 5.25 7.1 L 7.99 6.49 L 9.42 4.08 L 12 5.18 L 14.58 4.07 L 16.01 6.48 L 18.75 7.1 L 18.49 9.89 L 20.34 12 L 18.49 14.11 L 18.49 14.11 L 18.75 16.9 L 16.01 17.52 L 14.58 19.93 L 12 18.82 L 9.42 19.93 M 11 15 L 13 15 L 13 15.5 L 13 16 L 13 17 L 11 17 L 11 15 M 11 7 L 13 7 L 13 13 L 11 13 L 11 7" />
</vector>
</aapt:attr>
<target android:name="updates_filled">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="300"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="pathData"
android:valueFrom="M 23 12 L 20.56 9.22 L 20.9 5.54 L 17.29 4.72 L 15.4 1.54 L 12 3 L 8.6 1.54 L 6.71 4.72 L 3.1 5.53 L 3.44 9.21 L 1 12 L 3.44 14.78 L 3.1 18.47 L 6.71 19.29 L 8.6 22.47 L 12 21 L 15.4 22.46 L 17.29 19.28 L 20.9 18.46 L 20.56 14.78 L 23 12 Z M 9.42 19.93 L 7.99 17.52 L 5.25 16.9 L 5.51 14.1 L 3.66 12 L 5.51 9.88 L 5.25 7.1 L 7.99 6.49 L 9.42 4.08 L 12 5.18 L 14.58 4.07 L 16.01 6.48 L 18.75 7.1 L 18.49 9.89 L 20.34 12 L 18.49 14.11 L 18.49 14.11 L 18.75 16.9 L 16.01 17.52 L 14.58 19.93 L 12 18.82 L 9.42 19.93 M 11 15 L 13 15 L 13 15.5 L 13 16 L 13 17 L 11 17 L 11 15 M 11 7 L 13 7 L 13 13 L 11 13 L 11 7"
android:valueTo="M 23 12 L 20.56 9.22 L 20.9 5.54 L 17.29 4.72 L 15.4 1.54 L 12 3 L 8.6 1.54 L 6.71 4.72 L 3.1 5.53 L 3.44 9.21 L 1 12 L 3.44 14.78 L 3.1 18.47 L 6.71 19.29 L 8.6 22.47 L 12 21 L 15.4 22.46 L 17.29 19.28 L 20.9 18.46 L 20.56 14.78 L 23 12 Z M 12 13 L 11.5 13 L 11 13 L 11 12 L 11 11 L 11 10 L 11 9 L 11 8 L 11 7 L 12 7 L 13 7 L 13 7.857 L 13 8.714 L 13 9.571 L 13 10.429 L 13 11.286 L 13 12.143 L 13 13 L 13 13 L 13 13 L 12.5 13 L 12 13 M 11 15 L 13 15 L 13 16.058 L 13 17 L 13 17 L 11 17 L 11 15 M 12 10 L 12 10 L 12 10 L 12 10 L 12 10"
android:valueType="pathType" />
</aapt:attr>
</target>
</animated-vector>
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="browse_enter"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<group android:translateY="960">
<group
android:name="spin"
android:pivotX="480"
android:pivotY="-480">
<path
android:name="icon"
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M 335 -310 L 537 -368 Q 557 -374 571.5 -388.5 Q 586 -403 592 -423 L 650 -625 Q 653 -636 644.5 -644.5 Q 636 -653 625 -650 L 423 -592 Q 403 -586 388.5 -571.5 Q 374 -557 368 -537 L 310 -335 Q 307 -324 315.5 -315.5 Q 324 -307 335 -310 Z M 480 -420 Q 455 -420 437.5 -437.5 Q 420 -455 420 -480 Q 420 -505 437.5 -522.5 Q 455 -540 480 -540 Q 505 -540 522.5 -522.5 Q 540 -505 540 -480 Q 540 -455 522.5 -437.5 Q 505 -420 480 -420 Z M 480 -80 Q 397 -80 324 -111.5 Q 251 -143 197 -197 Q 143 -251 111.5 -324 Q 80 -397 80 -480 Q 80 -563 111.5 -636 Q 143 -709 197 -763 Q 251 -817 324 -848.5 Q 397 -880 480 -880 Q 563 -880 636 -848.5 Q 709 -817 763 -763 Q 817 -709 848.5 -636 Q 880 -563 880 -480 Q 880 -397 848.5 -324 Q 817 -251 763 -197 Q 709 -143 636 -111.5 Q 563 -80 480 -80 Z M 706.5 -706.5 L 718.09 -694.35 L 729.08 -681.66 L 739.43 -668.44 L 749.07 -654.7 L 757.95 -640.46 L 766.05 -625.75 L 773.3 -610.62 L 779.7 -595.1 L 785.21 -579.24 L 789.84 -563.11 L 793.57 -546.74 L 796.43 -530.2 L 798.44 -513.53 L 799.61 -496.79 L 800 -480 L 799.61 -463.21 L 798.44 -446.47 L 796.43 -429.8 L 793.57 -413.26 L 789.84 -396.89 L 785.21 -380.76 L 779.7 -364.9 L 773.3 -349.38 L 766.05 -334.25 L 757.95 -319.54 L 749.07 -305.3 L 739.43 -291.56 L 729.08 -278.34 L 718.09 -265.65 L 706.5 -253.5 L 694.35 -241.91 L 681.66 -230.92 L 668.44 -220.57 L 654.7 -210.93 L 640.46 -202.05 L 625.75 -193.95 L 610.62 -186.7 L 595.1 -180.3 L 579.24 -174.79 L 563.11 -170.16 L 546.74 -166.43 L 530.2 -163.57 L 513.53 -161.56 L 496.79 -160.39 L 480 -160 L 463.21 -160.39 L 446.47 -161.56 L 429.8 -163.57 L 413.26 -166.43 L 396.89 -170.16 L 380.76 -174.79 L 364.9 -180.3 L 349.38 -186.7 L 334.25 -193.95 L 319.54 -202.05 L 305.3 -210.93 L 291.56 -220.57 L 278.34 -230.92 L 265.65 -241.91 L 253.5 -253.5 L 241.91 -265.65 L 230.92 -278.34 L 220.57 -291.56 L 210.93 -305.3 L 202.05 -319.54 L 193.95 -334.25 L 186.7 -349.38 L 180.3 -364.9 L 174.79 -380.76 L 170.16 -396.89 L 166.43 -413.26 L 163.57 -429.8 L 161.56 -446.47 L 160.39 -463.21 L 160 -480 L 160.39 -496.79 L 161.56 -513.53 L 163.57 -530.2 L 166.43 -546.74 L 170.16 -563.11 L 174.79 -579.24 L 180.3 -595.1 L 186.7 -610.62 L 193.95 -625.75 L 202.05 -640.46 L 210.93 -654.7 L 220.57 -668.44 L 230.92 -681.66 L 241.91 -694.35 L 253.5 -706.5 L 265.65 -718.09 L 278.34 -729.08 L 291.56 -739.43 L 305.3 -749.07 L 319.54 -757.95 L 334.25 -766.05 L 349.38 -773.3 L 364.9 -779.7 L 380.76 -785.21 L 396.89 -789.84 L 413.26 -793.57 L 429.8 -796.43 L 446.47 -798.44 L 463.21 -799.61 L 480 -800 L 496.79 -799.61 L 513.53 -798.44 L 530.2 -796.43 L 546.74 -793.57 L 563.11 -789.84 L 579.24 -785.21 L 595.1 -779.7 L 610.62 -773.3 L 625.75 -766.05 L 640.46 -757.95 L 654.7 -749.07 L 668.44 -739.43 L 681.66 -729.08 L 694.35 -718.09 Z M 480 -480 Z" />
</group>
</group>
</vector>
</aapt:attr>
<target android:name="icon">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="300"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="pathData"
android:valueFrom="M 335 -310 L 537 -368 Q 557 -374 571.5 -388.5 Q 586 -403 592 -423 L 650 -625 Q 653 -636 644.5 -644.5 Q 636 -653 625 -650 L 423 -592 Q 403 -586 388.5 -571.5 Q 374 -557 368 -537 L 310 -335 Q 307 -324 315.5 -315.5 Q 324 -307 335 -310 Z M 480 -420 Q 455 -420 437.5 -437.5 Q 420 -455 420 -480 Q 420 -505 437.5 -522.5 Q 455 -540 480 -540 Q 505 -540 522.5 -522.5 Q 540 -505 540 -480 Q 540 -455 522.5 -437.5 Q 505 -420 480 -420 Z M 480 -80 Q 397 -80 324 -111.5 Q 251 -143 197 -197 Q 143 -251 111.5 -324 Q 80 -397 80 -480 Q 80 -563 111.5 -636 Q 143 -709 197 -763 Q 251 -817 324 -848.5 Q 397 -880 480 -880 Q 563 -880 636 -848.5 Q 709 -817 763 -763 Q 817 -709 848.5 -636 Q 880 -563 880 -480 Q 880 -397 848.5 -324 Q 817 -251 763 -197 Q 709 -143 636 -111.5 Q 563 -80 480 -80 Z M 706.5 -706.5 L 718.09 -694.35 L 729.08 -681.66 L 739.43 -668.44 L 749.07 -654.7 L 757.95 -640.46 L 766.05 -625.75 L 773.3 -610.62 L 779.7 -595.1 L 785.21 -579.24 L 789.84 -563.11 L 793.57 -546.74 L 796.43 -530.2 L 798.44 -513.53 L 799.61 -496.79 L 800 -480 L 799.61 -463.21 L 798.44 -446.47 L 796.43 -429.8 L 793.57 -413.26 L 789.84 -396.89 L 785.21 -380.76 L 779.7 -364.9 L 773.3 -349.38 L 766.05 -334.25 L 757.95 -319.54 L 749.07 -305.3 L 739.43 -291.56 L 729.08 -278.34 L 718.09 -265.65 L 706.5 -253.5 L 694.35 -241.91 L 681.66 -230.92 L 668.44 -220.57 L 654.7 -210.93 L 640.46 -202.05 L 625.75 -193.95 L 610.62 -186.7 L 595.1 -180.3 L 579.24 -174.79 L 563.11 -170.16 L 546.74 -166.43 L 530.2 -163.57 L 513.53 -161.56 L 496.79 -160.39 L 480 -160 L 463.21 -160.39 L 446.47 -161.56 L 429.8 -163.57 L 413.26 -166.43 L 396.89 -170.16 L 380.76 -174.79 L 364.9 -180.3 L 349.38 -186.7 L 334.25 -193.95 L 319.54 -202.05 L 305.3 -210.93 L 291.56 -220.57 L 278.34 -230.92 L 265.65 -241.91 L 253.5 -253.5 L 241.91 -265.65 L 230.92 -278.34 L 220.57 -291.56 L 210.93 -305.3 L 202.05 -319.54 L 193.95 -334.25 L 186.7 -349.38 L 180.3 -364.9 L 174.79 -380.76 L 170.16 -396.89 L 166.43 -413.26 L 163.57 -429.8 L 161.56 -446.47 L 160.39 -463.21 L 160 -480 L 160.39 -496.79 L 161.56 -513.53 L 163.57 -530.2 L 166.43 -546.74 L 170.16 -563.11 L 174.79 -579.24 L 180.3 -595.1 L 186.7 -610.62 L 193.95 -625.75 L 202.05 -640.46 L 210.93 -654.7 L 220.57 -668.44 L 230.92 -681.66 L 241.91 -694.35 L 253.5 -706.5 L 265.65 -718.09 L 278.34 -729.08 L 291.56 -739.43 L 305.3 -749.07 L 319.54 -757.95 L 334.25 -766.05 L 349.38 -773.3 L 364.9 -779.7 L 380.76 -785.21 L 396.89 -789.84 L 413.26 -793.57 L 429.8 -796.43 L 446.47 -798.44 L 463.21 -799.61 L 480 -800 L 496.79 -799.61 L 513.53 -798.44 L 530.2 -796.43 L 546.74 -793.57 L 563.11 -789.84 L 579.24 -785.21 L 595.1 -779.7 L 610.62 -773.3 L 625.75 -766.05 L 640.46 -757.95 L 654.7 -749.07 L 668.44 -739.43 L 681.66 -729.08 L 694.35 -718.09 Z M 480 -480 Z"
android:valueTo="M 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 Z M 480 -420 Q 455 -420 437.5 -437.5 Q 420 -455 420 -480 Q 420 -505 437.5 -522.5 Q 455 -540 480 -540 Q 505 -540 522.5 -522.5 Q 540 -505 540 -480 Q 540 -455 522.5 -437.5 Q 505 -420 480 -420 Z M 480 -80 Q 397 -80 324 -111.5 Q 251 -143 197 -197 Q 143 -251 111.5 -324 Q 80 -397 80 -480 Q 80 -563 111.5 -636 Q 143 -709 197 -763 Q 251 -817 324 -848.5 Q 397 -880 480 -880 Q 563 -880 636 -848.5 Q 709 -817 763 -763 Q 817 -709 848.5 -636 Q 880 -563 880 -480 Q 880 -397 848.5 -324 Q 817 -251 763 -197 Q 709 -143 636 -111.5 Q 563 -80 480 -80 Z M 644.5 -644.5 L 649.53 -637.03 L 650.6 -628.13 L 648.38 -619.35 L 645.88 -610.64 L 643.37 -601.92 L 640.87 -593.21 L 638.37 -584.49 L 635.87 -575.78 L 633.36 -567.06 L 630.86 -558.34 L 628.36 -549.63 L 625.86 -540.91 L 623.35 -532.2 L 620.85 -523.48 L 618.35 -514.77 L 615.85 -506.05 L 613.34 -497.33 L 610.84 -488.62 L 608.34 -479.9 L 605.84 -471.19 L 603.33 -462.47 L 600.83 -453.75 L 598.33 -445.04 L 595.83 -436.32 L 593.32 -427.61 L 590.65 -418.94 L 587.16 -410.58 L 582.78 -402.65 L 577.53 -395.27 L 571.5 -388.5 L 564.73 -382.47 L 557.35 -377.22 L 549.42 -372.84 L 541.06 -369.35 L 532.39 -366.68 L 523.68 -364.17 L 514.96 -361.67 L 506.25 -359.17 L 497.53 -356.67 L 488.81 -354.16 L 480.1 -351.66 L 471.38 -349.16 L 462.67 -346.66 L 453.95 -344.15 L 445.23 -341.65 L 436.52 -339.15 L 427.8 -336.65 L 419.09 -334.14 L 410.37 -331.64 L 401.66 -329.14 L 392.94 -326.64 L 384.22 -324.13 L 375.51 -321.63 L 366.79 -319.13 L 358.08 -316.63 L 349.36 -314.12 L 340.65 -311.62 L 331.87 -309.4 L 322.97 -310.47 L 315.5 -315.5 L 310.47 -322.97 L 309.4 -331.87 L 311.62 -340.65 L 314.12 -349.36 L 316.63 -358.08 L 319.13 -366.79 L 321.63 -375.51 L 324.13 -384.22 L 326.64 -392.94 L 329.14 -401.66 L 331.64 -410.37 L 334.14 -419.09 L 336.65 -427.8 L 339.15 -436.52 L 341.65 -445.23 L 344.15 -453.95 L 346.66 -462.67 L 349.16 -471.38 L 351.66 -480.1 L 354.16 -488.81 L 356.67 -497.53 L 359.17 -506.25 L 361.67 -514.96 L 364.17 -523.68 L 366.68 -532.39 L 369.35 -541.06 L 372.84 -549.42 L 377.22 -557.35 L 382.47 -564.73 L 388.5 -571.5 L 395.27 -577.53 L 402.65 -582.78 L 410.58 -587.16 L 418.94 -590.65 L 427.61 -593.32 L 436.32 -595.83 L 445.04 -598.33 L 453.75 -600.83 L 462.47 -603.33 L 471.19 -605.84 L 479.9 -608.34 L 488.62 -610.84 L 497.33 -613.34 L 506.05 -615.85 L 514.77 -618.35 L 523.48 -620.85 L 532.2 -623.35 L 540.91 -625.86 L 549.63 -628.36 L 558.34 -630.86 L 567.06 -633.36 L 575.78 -635.87 L 584.49 -638.37 L 593.21 -640.87 L 601.92 -643.37 L 610.64 -645.88 L 619.35 -648.38 L 628.13 -650.6 L 637.03 -649.53 Z M 480 -480 Z"
android:valueType="pathType" />
</aapt:attr>
</target>
<target android:name="spin">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="600"
android:interpolator="@android:anim/overshoot_interpolator"
android:propertyName="rotation"
android:valueFrom="-360"
android:valueTo="0"
android:valueType="floatType" />
</aapt:attr>
</target>
</animated-vector>
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="browse_exit"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<group android:translateY="960">
<group
android:name="spin"
android:pivotX="480"
android:pivotY="-480">
<path
android:name="icon"
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 Z M 480 -420 Q 455 -420 437.5 -437.5 Q 420 -455 420 -480 Q 420 -505 437.5 -522.5 Q 455 -540 480 -540 Q 505 -540 522.5 -522.5 Q 540 -505 540 -480 Q 540 -455 522.5 -437.5 Q 505 -420 480 -420 Z M 480 -80 Q 397 -80 324 -111.5 Q 251 -143 197 -197 Q 143 -251 111.5 -324 Q 80 -397 80 -480 Q 80 -563 111.5 -636 Q 143 -709 197 -763 Q 251 -817 324 -848.5 Q 397 -880 480 -880 Q 563 -880 636 -848.5 Q 709 -817 763 -763 Q 817 -709 848.5 -636 Q 880 -563 880 -480 Q 880 -397 848.5 -324 Q 817 -251 763 -197 Q 709 -143 636 -111.5 Q 563 -80 480 -80 Z M 644.5 -644.5 L 649.53 -637.03 L 650.6 -628.13 L 648.38 -619.35 L 645.88 -610.64 L 643.37 -601.92 L 640.87 -593.21 L 638.37 -584.49 L 635.87 -575.78 L 633.36 -567.06 L 630.86 -558.34 L 628.36 -549.63 L 625.86 -540.91 L 623.35 -532.2 L 620.85 -523.48 L 618.35 -514.77 L 615.85 -506.05 L 613.34 -497.33 L 610.84 -488.62 L 608.34 -479.9 L 605.84 -471.19 L 603.33 -462.47 L 600.83 -453.75 L 598.33 -445.04 L 595.83 -436.32 L 593.32 -427.61 L 590.65 -418.94 L 587.16 -410.58 L 582.78 -402.65 L 577.53 -395.27 L 571.5 -388.5 L 564.73 -382.47 L 557.35 -377.22 L 549.42 -372.84 L 541.06 -369.35 L 532.39 -366.68 L 523.68 -364.17 L 514.96 -361.67 L 506.25 -359.17 L 497.53 -356.67 L 488.81 -354.16 L 480.1 -351.66 L 471.38 -349.16 L 462.67 -346.66 L 453.95 -344.15 L 445.23 -341.65 L 436.52 -339.15 L 427.8 -336.65 L 419.09 -334.14 L 410.37 -331.64 L 401.66 -329.14 L 392.94 -326.64 L 384.22 -324.13 L 375.51 -321.63 L 366.79 -319.13 L 358.08 -316.63 L 349.36 -314.12 L 340.65 -311.62 L 331.87 -309.4 L 322.97 -310.47 L 315.5 -315.5 L 310.47 -322.97 L 309.4 -331.87 L 311.62 -340.65 L 314.12 -349.36 L 316.63 -358.08 L 319.13 -366.79 L 321.63 -375.51 L 324.13 -384.22 L 326.64 -392.94 L 329.14 -401.66 L 331.64 -410.37 L 334.14 -419.09 L 336.65 -427.8 L 339.15 -436.52 L 341.65 -445.23 L 344.15 -453.95 L 346.66 -462.67 L 349.16 -471.38 L 351.66 -480.1 L 354.16 -488.81 L 356.67 -497.53 L 359.17 -506.25 L 361.67 -514.96 L 364.17 -523.68 L 366.68 -532.39 L 369.35 -541.06 L 372.84 -549.42 L 377.22 -557.35 L 382.47 -564.73 L 388.5 -571.5 L 395.27 -577.53 L 402.65 -582.78 L 410.58 -587.16 L 418.94 -590.65 L 427.61 -593.32 L 436.32 -595.83 L 445.04 -598.33 L 453.75 -600.83 L 462.47 -603.33 L 471.19 -605.84 L 479.9 -608.34 L 488.62 -610.84 L 497.33 -613.34 L 506.05 -615.85 L 514.77 -618.35 L 523.48 -620.85 L 532.2 -623.35 L 540.91 -625.86 L 549.63 -628.36 L 558.34 -630.86 L 567.06 -633.36 L 575.78 -635.87 L 584.49 -638.37 L 593.21 -640.87 L 601.92 -643.37 L 610.64 -645.88 L 619.35 -648.38 L 628.13 -650.6 L 637.03 -649.53 Z M 480 -480 Z" />
</group>
</group>
</vector>
</aapt:attr>
<target android:name="icon">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="300"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="pathData"
android:valueFrom="M 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 Z M 480 -420 Q 455 -420 437.5 -437.5 Q 420 -455 420 -480 Q 420 -505 437.5 -522.5 Q 455 -540 480 -540 Q 505 -540 522.5 -522.5 Q 540 -505 540 -480 Q 540 -455 522.5 -437.5 Q 505 -420 480 -420 Z M 480 -80 Q 397 -80 324 -111.5 Q 251 -143 197 -197 Q 143 -251 111.5 -324 Q 80 -397 80 -480 Q 80 -563 111.5 -636 Q 143 -709 197 -763 Q 251 -817 324 -848.5 Q 397 -880 480 -880 Q 563 -880 636 -848.5 Q 709 -817 763 -763 Q 817 -709 848.5 -636 Q 880 -563 880 -480 Q 880 -397 848.5 -324 Q 817 -251 763 -197 Q 709 -143 636 -111.5 Q 563 -80 480 -80 Z M 644.5 -644.5 L 649.53 -637.03 L 650.6 -628.13 L 648.38 -619.35 L 645.88 -610.64 L 643.37 -601.92 L 640.87 -593.21 L 638.37 -584.49 L 635.87 -575.78 L 633.36 -567.06 L 630.86 -558.34 L 628.36 -549.63 L 625.86 -540.91 L 623.35 -532.2 L 620.85 -523.48 L 618.35 -514.77 L 615.85 -506.05 L 613.34 -497.33 L 610.84 -488.62 L 608.34 -479.9 L 605.84 -471.19 L 603.33 -462.47 L 600.83 -453.75 L 598.33 -445.04 L 595.83 -436.32 L 593.32 -427.61 L 590.65 -418.94 L 587.16 -410.58 L 582.78 -402.65 L 577.53 -395.27 L 571.5 -388.5 L 564.73 -382.47 L 557.35 -377.22 L 549.42 -372.84 L 541.06 -369.35 L 532.39 -366.68 L 523.68 -364.17 L 514.96 -361.67 L 506.25 -359.17 L 497.53 -356.67 L 488.81 -354.16 L 480.1 -351.66 L 471.38 -349.16 L 462.67 -346.66 L 453.95 -344.15 L 445.23 -341.65 L 436.52 -339.15 L 427.8 -336.65 L 419.09 -334.14 L 410.37 -331.64 L 401.66 -329.14 L 392.94 -326.64 L 384.22 -324.13 L 375.51 -321.63 L 366.79 -319.13 L 358.08 -316.63 L 349.36 -314.12 L 340.65 -311.62 L 331.87 -309.4 L 322.97 -310.47 L 315.5 -315.5 L 310.47 -322.97 L 309.4 -331.87 L 311.62 -340.65 L 314.12 -349.36 L 316.63 -358.08 L 319.13 -366.79 L 321.63 -375.51 L 324.13 -384.22 L 326.64 -392.94 L 329.14 -401.66 L 331.64 -410.37 L 334.14 -419.09 L 336.65 -427.8 L 339.15 -436.52 L 341.65 -445.23 L 344.15 -453.95 L 346.66 -462.67 L 349.16 -471.38 L 351.66 -480.1 L 354.16 -488.81 L 356.67 -497.53 L 359.17 -506.25 L 361.67 -514.96 L 364.17 -523.68 L 366.68 -532.39 L 369.35 -541.06 L 372.84 -549.42 L 377.22 -557.35 L 382.47 -564.73 L 388.5 -571.5 L 395.27 -577.53 L 402.65 -582.78 L 410.58 -587.16 L 418.94 -590.65 L 427.61 -593.32 L 436.32 -595.83 L 445.04 -598.33 L 453.75 -600.83 L 462.47 -603.33 L 471.19 -605.84 L 479.9 -608.34 L 488.62 -610.84 L 497.33 -613.34 L 506.05 -615.85 L 514.77 -618.35 L 523.48 -620.85 L 532.2 -623.35 L 540.91 -625.86 L 549.63 -628.36 L 558.34 -630.86 L 567.06 -633.36 L 575.78 -635.87 L 584.49 -638.37 L 593.21 -640.87 L 601.92 -643.37 L 610.64 -645.88 L 619.35 -648.38 L 628.13 -650.6 L 637.03 -649.53 Z M 480 -480 Z"
android:valueTo="M 335 -310 L 537 -368 Q 557 -374 571.5 -388.5 Q 586 -403 592 -423 L 650 -625 Q 653 -636 644.5 -644.5 Q 636 -653 625 -650 L 423 -592 Q 403 -586 388.5 -571.5 Q 374 -557 368 -537 L 310 -335 Q 307 -324 315.5 -315.5 Q 324 -307 335 -310 Z M 480 -420 Q 455 -420 437.5 -437.5 Q 420 -455 420 -480 Q 420 -505 437.5 -522.5 Q 455 -540 480 -540 Q 505 -540 522.5 -522.5 Q 540 -505 540 -480 Q 540 -455 522.5 -437.5 Q 505 -420 480 -420 Z M 480 -80 Q 397 -80 324 -111.5 Q 251 -143 197 -197 Q 143 -251 111.5 -324 Q 80 -397 80 -480 Q 80 -563 111.5 -636 Q 143 -709 197 -763 Q 251 -817 324 -848.5 Q 397 -880 480 -880 Q 563 -880 636 -848.5 Q 709 -817 763 -763 Q 817 -709 848.5 -636 Q 880 -563 880 -480 Q 880 -397 848.5 -324 Q 817 -251 763 -197 Q 709 -143 636 -111.5 Q 563 -80 480 -80 Z M 706.5 -706.5 L 718.09 -694.35 L 729.08 -681.66 L 739.43 -668.44 L 749.07 -654.7 L 757.95 -640.46 L 766.05 -625.75 L 773.3 -610.62 L 779.7 -595.1 L 785.21 -579.24 L 789.84 -563.11 L 793.57 -546.74 L 796.43 -530.2 L 798.44 -513.53 L 799.61 -496.79 L 800 -480 L 799.61 -463.21 L 798.44 -446.47 L 796.43 -429.8 L 793.57 -413.26 L 789.84 -396.89 L 785.21 -380.76 L 779.7 -364.9 L 773.3 -349.38 L 766.05 -334.25 L 757.95 -319.54 L 749.07 -305.3 L 739.43 -291.56 L 729.08 -278.34 L 718.09 -265.65 L 706.5 -253.5 L 694.35 -241.91 L 681.66 -230.92 L 668.44 -220.57 L 654.7 -210.93 L 640.46 -202.05 L 625.75 -193.95 L 610.62 -186.7 L 595.1 -180.3 L 579.24 -174.79 L 563.11 -170.16 L 546.74 -166.43 L 530.2 -163.57 L 513.53 -161.56 L 496.79 -160.39 L 480 -160 L 463.21 -160.39 L 446.47 -161.56 L 429.8 -163.57 L 413.26 -166.43 L 396.89 -170.16 L 380.76 -174.79 L 364.9 -180.3 L 349.38 -186.7 L 334.25 -193.95 L 319.54 -202.05 L 305.3 -210.93 L 291.56 -220.57 L 278.34 -230.92 L 265.65 -241.91 L 253.5 -253.5 L 241.91 -265.65 L 230.92 -278.34 L 220.57 -291.56 L 210.93 -305.3 L 202.05 -319.54 L 193.95 -334.25 L 186.7 -349.38 L 180.3 -364.9 L 174.79 -380.76 L 170.16 -396.89 L 166.43 -413.26 L 163.57 -429.8 L 161.56 -446.47 L 160.39 -463.21 L 160 -480 L 160.39 -496.79 L 161.56 -513.53 L 163.57 -530.2 L 166.43 -546.74 L 170.16 -563.11 L 174.79 -579.24 L 180.3 -595.1 L 186.7 -610.62 L 193.95 -625.75 L 202.05 -640.46 L 210.93 -654.7 L 220.57 -668.44 L 230.92 -681.66 L 241.91 -694.35 L 253.5 -706.5 L 265.65 -718.09 L 278.34 -729.08 L 291.56 -739.43 L 305.3 -749.07 L 319.54 -757.95 L 334.25 -766.05 L 349.38 -773.3 L 364.9 -779.7 L 380.76 -785.21 L 396.89 -789.84 L 413.26 -793.57 L 429.8 -796.43 L 446.47 -798.44 L 463.21 -799.61 L 480 -800 L 496.79 -799.61 L 513.53 -798.44 L 530.2 -796.43 L 546.74 -793.57 L 563.11 -789.84 L 579.24 -785.21 L 595.1 -779.7 L 610.62 -773.3 L 625.75 -766.05 L 640.46 -757.95 L 654.7 -749.07 L 668.44 -739.43 L 681.66 -729.08 L 694.35 -718.09 Z M 480 -480 Z"
android:valueType="pathType" />
</aapt:attr>
</target>
<target android:name="spin">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="600"
android:interpolator="@android:anim/overshoot_interpolator"
android:propertyName="rotation"
android:valueFrom="-360"
android:valueTo="0"
android:valueType="floatType" />
</aapt:attr>
</target>
</animated-vector>
@@ -25,7 +25,7 @@
<path <path
android:name="caret_l_rect" android:name="caret_l_rect"
android:fillColor="#000" android:fillColor="#000"
android:pathData="M -1.0,-4.0 l 2.0,0.0 c 0.0,0.0 0.0,0.0 0.0,0.0 l 0.0,8.0 c 0.0,0.0 0.0,0.0 0.0,0.0 l -2.0,0.0 c 0.0,0.0 0.0,0.0 0.0,0.0 l 0.0,-8.0 c 0.0,0.0 0.0,0.0 0.0,0.0 Z" /> android:pathData="M -1,-3 A 1,1 0 0 1 1,-3 L 1,3 A 1,1 0 0 1 -1,3 Z" />
</group> </group>
</group> </group>
</group> </group>
@@ -41,7 +41,7 @@
<path <path
android:name="caret_r_rect" android:name="caret_r_rect"
android:fillColor="#000" android:fillColor="#000"
android:pathData="M -1.0,-4.0 l 2.0,0.0 c 0.0,0.0 0.0,0.0 0.0,0.0 l 0.0,8.0 c 0.0,0.0 0.0,0.0 0.0,0.0 l -2.0,0.0 c 0.0,0.0 0.0,0.0 0.0,0.0 l 0.0,-8.0 c 0.0,0.0 0.0,0.0 0.0,0.0 Z" /> android:pathData="M -1,-3 A 1,1 0 0 1 1,-3 L 1,3 A 1,1 0 0 1 -1,3 Z" />
</group> </group>
</group> </group>
</group> </group>
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="history_enter"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<group android:translateY="960">
<path
android:name="hands"
android:fillColor="#000000"
android:pathData="M 520 -496 L 620 -396 Q 631 -385 631 -368 Q 631 -351 620 -340 Q 609 -329 592 -329 Q 575 -329 564 -340 L 452 -452 Q 446 -458 443 -465.5 Q 440 -473 440 -481 L 440 -640 Q 440 -657 451.5 -668.5 Q 463 -680 480 -680 Q 497 -680 508.5 -668.5 Q 520 -657 520 -640 L 520 -496 Z" />
<group
android:name="ring_group"
android:pivotX="480"
android:pivotY="-480">
<path
android:name="ring"
android:fillColor="#000000"
android:pathData="M 480 -120 Q 354 -120 257 -196.5 Q 160 -273 131 -392 Q 127 -407 137 -419.5 Q 147 -432 164 -434 Q 180 -436 193 -428 Q 206 -420 211 -404 Q 235 -314 310 -257 Q 385 -200 480 -200 Q 597 -200 678.5 -281.5 Q 760 -363 760 -480 Q 760 -597 678.5 -678.5 Q 597 -760 480 -760 Q 411 -760 351 -728 Q 291 -696 250 -640 L 320 -640 Q 337 -640 348.5 -628.5 Q 360 -617 360 -600 Q 360 -583 348.5 -571.5 Q 337 -560 320 -560 L 160 -560 Q 143 -560 131.5 -571.5 Q 120 -583 120 -600 L 120 -760 Q 120 -777 131.5 -788.5 Q 143 -800 160 -800 Q 177 -800 188.5 -788.5 Q 200 -777 200 -760 L 200 -706 Q 251 -770 324.5 -805 Q 398 -840 480 -840 Q 555 -840 620.5 -811.5 Q 686 -783 734.5 -734.5 Q 783 -686 811.5 -620.5 Q 840 -555 840 -480 Q 840 -405 811.5 -339.5 Q 783 -274 734.5 -225.5 Q 686 -177 620.5 -148.5 Q 555 -120 480 -120 Z" />
</group>
</group>
</vector>
</aapt:attr>
<target android:name="ring_group">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="rotation"
android:valueFrom="360"
android:valueTo="0"
android:valueType="floatType" />
</aapt:attr>
</target>
</animated-vector>
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="library_enter"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<group android:translateY="960">
<path
android:name="icon"
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M 720 -800 L 740.45 -800 L 760.9 -800 L 781.36 -800 L 800 -798.19 L 800 -777.74 L 800 -757.29 L 800 -736.84 L 800 -716.39 L 800 -695.93 L 800 -675.48 L 800 -655.03 L 800 -634.58 L 800 -614.13 L 800 -593.68 L 800 -573.22 L 800 -552.77 L 800 -532.32 L 800 -511.87 L 800 -491.42 L 800 -470.97 L 800 -450.51 L 800 -430.06 L 800 -409.61 L 800 -389.16 L 800 -368.71 L 800 -348.26 L 800 -327.8 L 787.35 -320 L 766.9 -320 L 746.45 -320 L 726 -320 L 705.54 -320 L 685.09 -320 L 664.64 -320 L 644.19 -320 L 623.74 -320 L 603.29 -320 L 582.83 -320 L 562.38 -320 L 541.93 -320 L 521.48 -320 L 501.03 -320 L 480.58 -320 L 460.12 -320 L 439.67 -320 L 419.22 -320 L 398.77 -320 L 378.32 -320 L 357.87 -320 L 337.41 -320 L 320 -323.04 L 320 -343.49 L 320 -363.94 L 320 -384.39 L 320 -404.85 L 320 -425.3 L 320 -445.75 L 320 -466.2 L 320 -486.65 L 320 -507.1 L 320 -527.56 L 320 -548.01 L 320 -568.46 L 320 -588.91 L 320 -609.36 L 320 -629.81 L 320 -650.27 L 320 -670.72 L 320 -691.17 L 320 -711.62 L 320 -732.07 L 320 -752.52 L 320 -772.98 L 320 -793.43 L 333.88 -800 L 354.33 -800 L 374.78 -800 L 395.23 -800 L 415.69 -800 L 436.14 -800 L 456.59 -800 L 477.04 -800 L 497.49 -800 L 517.95 -800 L 520 -781.6 L 520 -761.15 L 520 -740.7 L 520 -720.25 L 520 -699.8 L 520 -679.34 L 520 -658.89 L 520 -638.44 L 520 -617.99 L 520 -597.54 L 520 -577.09 L 520 -556.63 L 527.46 -538.46 L 546.61 -536.17 L 564.29 -546.46 L 581.89 -556.87 L 599.49 -567.28 L 618.86 -572.96 L 638.53 -568.27 L 656.21 -558 L 673.81 -547.58 L 691.39 -537.14 L 710.63 -537.43 L 719.98 -554.58 L 720 -575.03 L 720 -595.48 L 720 -615.93 L 720 -636.39 L 720 -656.84 L 720 -677.29 L 720 -697.74 L 720 -718.19 L 720 -738.64 L 720 -759.1 L 720 -779.55 Z M 320 -240 Q 287 -240 263.5 -263.5 Q 240 -287 240 -320 L 240 -800 Q 240 -833 263.5 -856.5 Q 287 -880 320 -880 L 800 -880 Q 833 -880 856.5 -856.5 Q 880 -833 880 -800 L 880 -320 Q 880 -287 856.5 -263.5 Q 833 -240 800 -240 L 320 -240 Z M 160 -80 Q 127 -80 103.5 -103.5 Q 80 -127 80 -160 L 80 -680 Q 80 -697 91.5 -708.5 Q 103 -720 120 -720 Q 137 -720 148.5 -708.5 Q 160 -697 160 -680 L 160 -160 L 680 -160 Q 697 -160 708.5 -148.5 Q 720 -137 720 -120 Q 720 -103 708.5 -91.5 Q 697 -80 680 -80 L 160 -80 Z M 320 -800 L 320 -320 L 320 -800 Z M 520 -555 Q 520 -543 529.5 -537 Q 539 -531 550 -538 L 599 -567 Q 608 -573 619.5 -573 Q 631 -573 641 -567 L 690 -538 Q 700 -531 710 -537 Q 720 -543 720 -555 Q 720 -543 710 -537 Q 700 -531 690 -538 L 641 -567 Q 631 -573 619.5 -573 Q 608 -573 599 -567 L 550 -538 Q 539 -531 529.5 -537 Q 520 -543 520 -555 Z" />
</group>
</vector>
</aapt:attr>
<target android:name="icon">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="300"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="pathData"
android:valueFrom="M 720 -800 L 740.45 -800 L 760.9 -800 L 781.36 -800 L 800 -798.19 L 800 -777.74 L 800 -757.29 L 800 -736.84 L 800 -716.39 L 800 -695.93 L 800 -675.48 L 800 -655.03 L 800 -634.58 L 800 -614.13 L 800 -593.68 L 800 -573.22 L 800 -552.77 L 800 -532.32 L 800 -511.87 L 800 -491.42 L 800 -470.97 L 800 -450.51 L 800 -430.06 L 800 -409.61 L 800 -389.16 L 800 -368.71 L 800 -348.26 L 800 -327.8 L 787.35 -320 L 766.9 -320 L 746.45 -320 L 726 -320 L 705.54 -320 L 685.09 -320 L 664.64 -320 L 644.19 -320 L 623.74 -320 L 603.29 -320 L 582.83 -320 L 562.38 -320 L 541.93 -320 L 521.48 -320 L 501.03 -320 L 480.58 -320 L 460.12 -320 L 439.67 -320 L 419.22 -320 L 398.77 -320 L 378.32 -320 L 357.87 -320 L 337.41 -320 L 320 -323.04 L 320 -343.49 L 320 -363.94 L 320 -384.39 L 320 -404.85 L 320 -425.3 L 320 -445.75 L 320 -466.2 L 320 -486.65 L 320 -507.1 L 320 -527.56 L 320 -548.01 L 320 -568.46 L 320 -588.91 L 320 -609.36 L 320 -629.81 L 320 -650.27 L 320 -670.72 L 320 -691.17 L 320 -711.62 L 320 -732.07 L 320 -752.52 L 320 -772.98 L 320 -793.43 L 333.88 -800 L 354.33 -800 L 374.78 -800 L 395.23 -800 L 415.69 -800 L 436.14 -800 L 456.59 -800 L 477.04 -800 L 497.49 -800 L 517.95 -800 L 520 -781.6 L 520 -761.15 L 520 -740.7 L 520 -720.25 L 520 -699.8 L 520 -679.34 L 520 -658.89 L 520 -638.44 L 520 -617.99 L 520 -597.54 L 520 -577.09 L 520 -556.63 L 527.46 -538.46 L 546.61 -536.17 L 564.29 -546.46 L 581.89 -556.87 L 599.49 -567.28 L 618.86 -572.96 L 638.53 -568.27 L 656.21 -558 L 673.81 -547.58 L 691.39 -537.14 L 710.63 -537.43 L 719.98 -554.58 L 720 -575.03 L 720 -595.48 L 720 -615.93 L 720 -636.39 L 720 -656.84 L 720 -677.29 L 720 -697.74 L 720 -718.19 L 720 -738.64 L 720 -759.1 L 720 -779.55 Z M 320 -240 Q 287 -240 263.5 -263.5 Q 240 -287 240 -320 L 240 -800 Q 240 -833 263.5 -856.5 Q 287 -880 320 -880 L 800 -880 Q 833 -880 856.5 -856.5 Q 880 -833 880 -800 L 880 -320 Q 880 -287 856.5 -263.5 Q 833 -240 800 -240 L 320 -240 Z M 160 -80 Q 127 -80 103.5 -103.5 Q 80 -127 80 -160 L 80 -680 Q 80 -697 91.5 -708.5 Q 103 -720 120 -720 Q 137 -720 148.5 -708.5 Q 160 -697 160 -680 L 160 -160 L 680 -160 Q 697 -160 708.5 -148.5 Q 720 -137 720 -120 Q 720 -103 708.5 -91.5 Q 697 -80 680 -80 L 160 -80 Z M 320 -800 L 320 -320 L 320 -800 Z M 520 -555 Q 520 -543 529.5 -537 Q 539 -531 550 -538 L 599 -567 Q 608 -573 619.5 -573 Q 631 -573 641 -567 L 690 -538 Q 700 -531 710 -537 Q 720 -543 720 -555 Q 720 -543 710 -537 Q 700 -531 690 -538 L 641 -567 Q 631 -573 619.5 -573 Q 608 -573 599 -567 L 550 -538 Q 539 -531 529.5 -537 Q 520 -543 520 -555 Z"
android:valueTo="M 720 -800 L 720 -792.22 L 720 -784.44 L 720 -776.66 L 720 -768.88 L 720 -761.1 L 720 -753.31 L 720 -745.53 L 720 -737.75 L 720 -729.97 L 720 -722.19 L 720 -714.41 L 720 -706.63 L 720 -698.85 L 720 -691.07 L 720 -683.29 L 720 -675.51 L 720 -667.72 L 720 -659.94 L 720 -652.16 L 720 -644.38 L 720 -636.6 L 720 -628.82 L 720 -621.04 L 720 -613.26 L 720 -605.48 L 720 -597.7 L 720 -589.92 L 720 -582.13 L 720 -574.35 L 720 -566.57 L 720 -558.79 L 719.66 -551.03 L 716.95 -543.81 L 711.44 -538.41 L 704.34 -535.34 L 696.64 -535.33 L 689.49 -538.31 L 682.86 -542.37 L 676.22 -546.44 L 669.59 -550.5 L 662.95 -554.56 L 656.31 -558.62 L 649.68 -562.69 L 643.04 -566.75 L 636.22 -570.48 L 628.84 -572.9 L 621.15 -573.92 L 613.41 -573.38 L 605.93 -571.3 L 598.92 -567.95 L 592.29 -563.89 L 585.65 -559.83 L 579.01 -555.76 L 572.38 -551.7 L 565.74 -547.64 L 559.11 -543.58 L 552.47 -539.51 L 545.58 -535.94 L 537.93 -534.97 L 530.54 -537.24 L 524.43 -541.97 L 520.82 -548.78 L 520 -556.49 L 520 -564.27 L 520 -572.05 L 520 -579.83 L 520 -587.61 L 520 -595.39 L 520 -603.17 L 520 -610.95 L 520 -618.73 L 520 -626.52 L 520 -634.3 L 520 -642.08 L 520 -649.86 L 520 -657.64 L 520 -665.42 L 520 -673.2 L 520 -680.98 L 520 -688.76 L 520 -696.54 L 520 -704.33 L 520 -712.11 L 520 -719.89 L 520 -727.67 L 520 -735.45 L 520 -743.23 L 520 -751.01 L 520 -758.79 L 520 -766.57 L 520 -774.35 L 520 -782.13 L 520 -789.92 L 520 -797.7 L 525.48 -800 L 533.26 -800 L 541.04 -800 L 548.82 -800 L 556.6 -800 L 564.38 -800 L 572.16 -800 L 579.94 -800 L 587.72 -800 L 595.51 -800 L 603.29 -800 L 611.07 -800 L 618.85 -800 L 626.63 -800 L 634.41 -800 L 642.19 -800 L 649.97 -800 L 657.75 -800 L 665.53 -800 L 673.31 -800 L 681.1 -800 L 688.88 -800 L 696.66 -800 L 704.44 -800 L 712.22 -800 Z M 320 -240 Q 287 -240 263.5 -263.5 Q 240 -287 240 -320 L 240 -800 Q 240 -833 263.5 -856.5 Q 287 -880 320 -880 L 800 -880 Q 833 -880 856.5 -856.5 Q 880 -833 880 -800 L 880 -320 Q 880 -287 856.5 -263.5 Q 833 -240 800 -240 L 320 -240 Z M 160 -80 Q 127 -80 103.5 -103.5 Q 80 -127 80 -160 L 80 -680 Q 80 -697 91.5 -708.5 Q 103 -720 120 -720 Q 137 -720 148.5 -708.5 Q 160 -697 160 -680 L 160 -160 L 680 -160 Q 697 -160 708.5 -148.5 Q 720 -137 720 -120 Q 720 -103 708.5 -91.5 Q 697 -80 680 -80 L 160 -80 Z M 320 -800 L 320 -320 L 320 -800 Z M 520 -555 Q 520 -543 529.5 -537 Q 539 -531 550 -538 L 599 -567 Q 608 -573 619.5 -573 Q 631 -573 641 -567 L 690 -538 Q 700 -531 710 -537 Q 720 -543 720 -555 Q 720 -543 710 -537 Q 700 -531 690 -538 L 641 -567 Q 631 -573 619.5 -573 Q 608 -573 599 -567 L 550 -538 Q 539 -531 529.5 -537 Q 520 -543 520 -555 Z"
android:valueType="pathType" />
</aapt:attr>
</target>
</animated-vector>
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="updates_enter"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<group android:translateY="960">
<path
android:name="icon"
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M 326 -90 L 268 -188 L 158 -212 Q 143 -215 134 -227.5 Q 125 -240 127 -255 L 138 -368 L 63 -454 Q 53 -465 53 -480 Q 53 -495 63 -506 L 138 -592 L 127 -705 Q 125 -720 134 -732.5 Q 143 -745 158 -748 L 268 -772 L 326 -870 Q 334 -883 348 -887.5 Q 362 -892 376 -886 L 480 -842 L 584 -886 Q 598 -892 612 -887.5 Q 626 -883 634 -870 L 692 -772 L 802 -748 Q 817 -745 826 -732.5 Q 835 -720 833 -705 L 822 -592 L 897 -506 Q 907 -495 907 -480 Q 907 -465 897 -454 L 822 -368 L 833 -255 Q 835 -240 826 -227.5 Q 817 -215 802 -212 L 692 -188 L 634 -90 Q 626 -77 612 -72.5 Q 598 -68 584 -74 L 480 -118 L 376 -74 Q 362 -68 348 -72.5 Q 334 -77 326 -90 Z M 582 -798 L 591.69 -781.97 L 601.37 -765.93 L 611.06 -749.9 L 620.75 -733.86 L 630.44 -717.83 L 640.23 -701.95 L 658.54 -697.96 L 676.84 -693.96 L 695.14 -689.97 L 713.44 -685.98 L 731.75 -681.98 L 750 -677.95 L 748.33 -659.29 L 746.66 -640.63 L 745 -621.97 L 743.33 -603.31 L 741.67 -584.65 L 740 -566 L 752.22 -551.8 L 764.44 -537.6 L 776.66 -523.4 L 788.88 -509.2 L 801.1 -495 L 813.31 -480.8 L 802.31 -466.73 L 789.93 -452.67 L 777.54 -438.62 L 765.16 -424.56 L 752.78 -410.5 L 740.39 -396.45 L 741.61 -377.94 L 743.28 -359.28 L 744.94 -340.62 L 746.61 -321.96 L 748.28 -303.3 L 749.94 -284.64 L 732.39 -279.84 L 714.16 -275.53 L 695.93 -271.22 L 677.7 -266.91 L 659.47 -262.6 L 641.24 -258.29 L 631.2 -242.92 L 621.76 -226.74 L 612.32 -210.56 L 602.89 -194.38 L 593.45 -178.19 L 584.01 -162.01 L 566.76 -169.29 L 549.51 -176.59 L 532.26 -183.89 L 515 -191.19 L 497.75 -198.49 L 480.5 -205.79 L 463.29 -198.79 L 446.09 -191.37 L 428.89 -183.95 L 411.69 -176.53 L 394.49 -169.11 L 377.6 -162.66 L 367.91 -178.7 L 358.22 -194.73 L 348.54 -210.77 L 338.85 -226.8 L 329.16 -242.83 L 319.01 -258.22 L 300.71 -262.21 L 282.4 -266.2 L 264.1 -270.2 L 245.8 -274.19 L 227.5 -278.18 L 210.07 -282.82 L 211.71 -301.48 L 213.35 -320.15 L 214.98 -338.81 L 216.62 -357.47 L 218.26 -376.13 L 219.89 -394.79 L 208.42 -409.15 L 196.04 -423.2 L 183.65 -437.26 L 171.27 -451.32 L 158.89 -465.37 L 146.5 -479.43 L 157.72 -493.62 L 169.94 -507.82 L 182.16 -522.02 L 194.38 -536.22 L 206.6 -550.42 L 218.82 -564.62 L 218.5 -582.85 L 216.83 -601.51 L 215.16 -620.17 L 213.5 -638.83 L 211.83 -657.49 L 210.17 -676.15 L 226.48 -681.6 L 244.79 -685.59 L 263.09 -689.58 L 281.39 -693.58 L 299.7 -697.57 L 318 -701.56 L 328.41 -716.41 L 337.85 -732.59 L 347.29 -748.77 L 356.72 -764.96 L 366.16 -781.14 L 375.6 -797.32 L 392.53 -791.01 L 409.78 -783.71 L 427.03 -776.41 L 444.28 -769.11 L 461.54 -761.81 L 478.79 -754.51 L 495.99 -760.9 L 513.2 -768.32 L 530.4 -775.74 L 547.6 -783.16 L 564.8 -790.58 Z M 480 -480 Z M 508.5 -291.5 Q 520 -303 520 -320 Q 520 -337 508.5 -348.5 Q 497 -360 480 -360 Q 463 -360 451.5 -348.5 Q 440 -337 440 -320 Q 440 -303 451.5 -291.5 Q 463 -280 480 -280 Q 497 -280 508.5 -291.5 Z M 508.5 -451.5 Q 520 -463 520 -480 L 520 -640 Q 520 -657 508.5 -668.5 Q 497 -680 480 -680 Q 463 -680 451.5 -668.5 Q 440 -657 440 -640 L 440 -480 Q 440 -463 451.5 -451.5 Q 463 -440 480 -440 Q 497 -440 508.5 -451.5 Z" />
</group>
</vector>
</aapt:attr>
<target android:name="icon">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="300"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="pathData"
android:valueFrom="M 326 -90 L 268 -188 L 158 -212 Q 143 -215 134 -227.5 Q 125 -240 127 -255 L 138 -368 L 63 -454 Q 53 -465 53 -480 Q 53 -495 63 -506 L 138 -592 L 127 -705 Q 125 -720 134 -732.5 Q 143 -745 158 -748 L 268 -772 L 326 -870 Q 334 -883 348 -887.5 Q 362 -892 376 -886 L 480 -842 L 584 -886 Q 598 -892 612 -887.5 Q 626 -883 634 -870 L 692 -772 L 802 -748 Q 817 -745 826 -732.5 Q 835 -720 833 -705 L 822 -592 L 897 -506 Q 907 -495 907 -480 Q 907 -465 897 -454 L 822 -368 L 833 -255 Q 835 -240 826 -227.5 Q 817 -215 802 -212 L 692 -188 L 634 -90 Q 626 -77 612 -72.5 Q 598 -68 584 -74 L 480 -118 L 376 -74 Q 362 -68 348 -72.5 Q 334 -77 326 -90 Z M 582 -798 L 591.69 -781.97 L 601.37 -765.93 L 611.06 -749.9 L 620.75 -733.86 L 630.44 -717.83 L 640.23 -701.95 L 658.54 -697.96 L 676.84 -693.96 L 695.14 -689.97 L 713.44 -685.98 L 731.75 -681.98 L 750 -677.95 L 748.33 -659.29 L 746.66 -640.63 L 745 -621.97 L 743.33 -603.31 L 741.67 -584.65 L 740 -566 L 752.22 -551.8 L 764.44 -537.6 L 776.66 -523.4 L 788.88 -509.2 L 801.1 -495 L 813.31 -480.8 L 802.31 -466.73 L 789.93 -452.67 L 777.54 -438.62 L 765.16 -424.56 L 752.78 -410.5 L 740.39 -396.45 L 741.61 -377.94 L 743.28 -359.28 L 744.94 -340.62 L 746.61 -321.96 L 748.28 -303.3 L 749.94 -284.64 L 732.39 -279.84 L 714.16 -275.53 L 695.93 -271.22 L 677.7 -266.91 L 659.47 -262.6 L 641.24 -258.29 L 631.2 -242.92 L 621.76 -226.74 L 612.32 -210.56 L 602.89 -194.38 L 593.45 -178.19 L 584.01 -162.01 L 566.76 -169.29 L 549.51 -176.59 L 532.26 -183.89 L 515 -191.19 L 497.75 -198.49 L 480.5 -205.79 L 463.29 -198.79 L 446.09 -191.37 L 428.89 -183.95 L 411.69 -176.53 L 394.49 -169.11 L 377.6 -162.66 L 367.91 -178.7 L 358.22 -194.73 L 348.54 -210.77 L 338.85 -226.8 L 329.16 -242.83 L 319.01 -258.22 L 300.71 -262.21 L 282.4 -266.2 L 264.1 -270.2 L 245.8 -274.19 L 227.5 -278.18 L 210.07 -282.82 L 211.71 -301.48 L 213.35 -320.15 L 214.98 -338.81 L 216.62 -357.47 L 218.26 -376.13 L 219.89 -394.79 L 208.42 -409.15 L 196.04 -423.2 L 183.65 -437.26 L 171.27 -451.32 L 158.89 -465.37 L 146.5 -479.43 L 157.72 -493.62 L 169.94 -507.82 L 182.16 -522.02 L 194.38 -536.22 L 206.6 -550.42 L 218.82 -564.62 L 218.5 -582.85 L 216.83 -601.51 L 215.16 -620.17 L 213.5 -638.83 L 211.83 -657.49 L 210.17 -676.15 L 226.48 -681.6 L 244.79 -685.59 L 263.09 -689.58 L 281.39 -693.58 L 299.7 -697.57 L 318 -701.56 L 328.41 -716.41 L 337.85 -732.59 L 347.29 -748.77 L 356.72 -764.96 L 366.16 -781.14 L 375.6 -797.32 L 392.53 -791.01 L 409.78 -783.71 L 427.03 -776.41 L 444.28 -769.11 L 461.54 -761.81 L 478.79 -754.51 L 495.99 -760.9 L 513.2 -768.32 L 530.4 -775.74 L 547.6 -783.16 L 564.8 -790.58 Z M 480 -480 Z M 508.5 -291.5 Q 520 -303 520 -320 Q 520 -337 508.5 -348.5 Q 497 -360 480 -360 Q 463 -360 451.5 -348.5 Q 440 -337 440 -320 Q 440 -303 451.5 -291.5 Q 463 -280 480 -280 Q 497 -280 508.5 -291.5 Z M 508.5 -451.5 Q 520 -463 520 -480 L 520 -640 Q 520 -657 508.5 -668.5 Q 497 -680 480 -680 Q 463 -680 451.5 -668.5 Q 440 -657 440 -640 L 440 -480 Q 440 -463 451.5 -451.5 Q 463 -440 480 -440 Q 497 -440 508.5 -451.5 Z"
android:valueTo="M 326 -90 L 268 -188 L 158 -212 Q 143 -215 134 -227.5 Q 125 -240 127 -255 L 138 -368 L 63 -454 Q 53 -465 53 -480 Q 53 -495 63 -506 L 138 -592 L 127 -705 Q 125 -720 134 -732.5 Q 143 -745 158 -748 L 268 -772 L 326 -870 Q 334 -883 348 -887.5 Q 362 -892 376 -886 L 480 -842 L 584 -886 Q 598 -892 612 -887.5 Q 626 -883 634 -870 L 692 -772 L 802 -748 Q 817 -745 826 -732.5 Q 835 -720 833 -705 L 822 -592 L 897 -506 Q 907 -495 907 -480 Q 907 -465 897 -454 L 822 -368 L 833 -255 Q 835 -240 826 -227.5 Q 817 -215 802 -212 L 692 -188 L 634 -90 Q 626 -77 612 -72.5 Q 598 -68 584 -74 L 480 -118 L 376 -74 Q 362 -68 348 -72.5 Q 334 -77 326 -90 Z M 480 -680 L 488.17 -679.28 L 496.02 -676.94 L 503.18 -672.95 L 509.35 -667.57 L 514.33 -661.07 L 517.81 -653.65 L 519.62 -645.66 L 520 -637.47 L 520 -629.26 L 520 -621.05 L 520 -612.84 L 520 -604.63 L 520 -596.42 L 520 -588.21 L 520 -580 L 520 -571.79 L 520 -563.58 L 520 -555.37 L 520 -547.16 L 520 -538.95 L 520 -530.74 L 520 -522.53 L 520 -514.32 L 520 -506.11 L 520 -497.9 L 520 -489.69 L 520 -481.48 L 519.48 -473.29 L 517.46 -465.36 L 513.79 -458.03 L 508.64 -451.66 L 502.33 -446.42 L 495.05 -442.68 L 487.13 -440.58 L 480 -438.95 L 480 -430.74 L 480 -422.53 L 480 -414.32 L 480 -406.11 L 480 -397.9 L 480 -389.69 L 480 -381.48 L 480 -373.27 L 480 -365.06 L 483.15 -359.86 L 491.24 -358.56 L 498.88 -355.61 L 505.7 -351.05 L 511.44 -345.21 L 515.87 -338.32 L 518.7 -330.63 L 519.89 -322.53 L 519.62 -314.34 L 517.81 -306.35 L 514.33 -298.93 L 509.35 -292.43 L 503.18 -287.05 L 496.02 -283.06 L 488.17 -280.72 L 480 -280 L 471.83 -280.72 L 463.98 -283.06 L 456.82 -287.05 L 450.65 -292.43 L 445.67 -298.93 L 442.19 -306.35 L 440.38 -314.34 L 440.11 -322.53 L 441.3 -330.63 L 444.13 -338.32 L 448.56 -345.21 L 454.3 -351.05 L 461.12 -355.61 L 468.76 -358.56 L 476.85 -359.86 L 480 -365.06 L 480 -373.27 L 480 -381.48 L 480 -389.69 L 480 -397.9 L 480 -406.11 L 480 -414.32 L 480 -422.53 L 480 -430.74 L 480 -438.95 L 472.87 -440.58 L 464.95 -442.68 L 457.67 -446.42 L 451.36 -451.66 L 446.21 -458.03 L 442.54 -465.36 L 440.52 -473.29 L 440 -481.48 L 440 -489.69 L 440 -497.9 L 440 -506.11 L 440 -514.32 L 440 -522.53 L 440 -530.74 L 440 -538.95 L 440 -547.16 L 440 -555.37 L 440 -563.58 L 440 -571.79 L 440 -580 L 440 -588.21 L 440 -596.42 L 440 -604.63 L 440 -612.84 L 440 -621.05 L 440 -629.26 L 440 -637.47 L 440.38 -645.66 L 442.19 -653.65 L 445.67 -661.07 L 450.65 -667.57 L 456.82 -672.95 L 463.98 -676.94 L 471.83 -679.28 Z M 480 -480 Z M 480 -320 Q 480 -320 480 -320 Q 480 -320 480 -320 Q 480 -320 480 -320 Q 480 -320 480 -320 Q 480 -320 480 -320 Q 480 -320 480 -320 Q 480 -320 480 -320 Q 480 -320 480 -320 Z M 480 -560 Q 480 -560 480 -560 L 480 -560 Q 480 -560 480 -560 Q 480 -560 480 -560 Q 480 -560 480 -560 Q 480 -560 480 -560 L 480 -560 Q 480 -560 480 -560 Q 480 -560 480 -560 Q 480 -560 480 -560 Z"
android:valueType="pathType" />
</aapt:attr>
</target>
</animated-vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M18,2L6,2c-1.1,0 -2,0.9 -2,2v16c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,4c0,-1.1 -0.9,-2 -2,-2zM9,4h2v5l-1,-0.75L9,9L9,4zM18,20L6,20L6,4h1v9l3,-2.25L13,13L13,4h5v16z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M17,15h2V7c0,-1.1 -0.9,-2 -2,-2H9v2h8v8zM7,17V1H5v4H1v2h4v10c0,1.1 0.9,2 2,2h10v4h2v-4h4v-2H7z" />
</vector>
@@ -1,18 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M7,1l-2,0l0,1.18l2,2l0,-3.18z" />
<path
android:fillColor="#000"
android:pathData="M17,7v7.18l0.82,0.82H19V7a2.0059,2.0059 0,0 0,-2 -2H9V6.18L9.82,7Z" />
<path
android:fillColor="#000"
android:pathData="M19.0001,19l-2,-2h0L2.1,2.1 0.68,3.51 2.1707,5H1V7H4.1718L5,7.8278V17a2.0059,2.0059 0,0 0,2 2h9.1778L17,19.8218V23h2V21.8207L20.49,23.31 21.9,21.9l-2.9,-2.9ZM7,17V9.8268L14.1768,17Z" />
<path
android:fillColor="#000"
android:pathData="M19.82,17l2,2l1.18,0l0,-2l-3.18,0z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M9,16.2L4.8,12l-1.4,1.4L9,19 21,7l-1.4,-1.4L9,16.2z" />
</vector>
@@ -1,12 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M9,16.2L4.8,12l-1.4,1.4L9,19 21,7l-1.4,-1.4L9,16.2z" />
<path
android:fillColor="#000"
android:pathData="M22,18l-3,0l0,-4l-2,0l0,4l-3,0l4,4z" />
</vector>
@@ -1,12 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M11.99,2C6.47,2 2,6.48 2,12C2,17.52 6.47,22 11.99,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 11.99,2zM12,4C16.42,4 20,7.58 20,12C20,16.42 16.42,20 12,20C7.58,20 4,16.42 4,12C4,7.58 7.58,4 12,4z"
android:fillColor="#000000"/>
<path
android:pathData="M18.041,12 L16.976,10.935 12.755,15.149L12.755,5.959L11.245,5.959L11.245,15.149L7.031,10.928 5.959,12l6.041,6.041z"
android:fillColor="#000000"/>
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M20,9H4v2h16V9zM4,15h16v-2H4V15z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M20.5,11H19V7c0,-1.1 -0.9,-2 -2,-2h-4V3.5C13,2.12 11.88,1 10.5,1S8,2.12 8,3.5V5H4c-1.1,0 -1.99,0.9 -1.99,2v3.8H3.5c1.49,0 2.7,1.21 2.7,2.7s-1.21,2.7 -2.7,2.7H2V20c0,1.1 0.9,2 2,2h3.8v-1.5c0,-1.49 1.21,-2.7 2.7,-2.7 1.49,0 2.7,1.21 2.7,2.7V22H17c1.1,0 2,-0.9 2,-2v-4h1.5c1.38,0 2.5,-1.12 2.5,-2.5S21.88,11 20.5,11z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M10,4H4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V8c0,-1.1 -0.9,-2 -2,-2h-8l-2,-2z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M3,10C2.76,10 2.55,10.09 2.41,10.25C2.27,10.4 2.21,10.62 2.24,10.86L2.74,13.85C2.82,14.5 3.4,15 4,15H7C7.64,15 8.36,14.44 8.5,13.82L9.56,10.63C9.6,10.5 9.57,10.31 9.5,10.19C9.39,10.07 9.22,10 9,10H3M7,17H4C2.38,17 0.96,15.74 0.76,14.14L0.26,11.15C0.15,10.3 0.39,9.5 0.91,8.92C1.43,8.34 2.19,8 3,8H9C9.83,8 10.58,8.35 11.06,8.96C11.17,9.11 11.27,9.27 11.35,9.45C11.78,9.36 12.22,9.36 12.64,9.45C12.72,9.27 12.82,9.11 12.94,8.96C13.41,8.35 14.16,8 15,8H21C21.81,8 22.57,8.34 23.09,8.92C23.6,9.5 23.84,10.3 23.74,11.11L23.23,14.18C23.04,15.74 21.61,17 20,17H17C15.44,17 13.92,15.81 13.54,14.3L12.64,11.59C12.26,11.31 11.73,11.31 11.35,11.59L10.43,14.37C10.07,15.82 8.56,17 7,17M15,10C14.78,10 14.61,10.07 14.5,10.19C14.42,10.31 14.4,10.5 14.45,10.7L15.46,13.75C15.64,14.44 16.36,15 17,15H20C20.59,15 21.18,14.5 21.25,13.89L21.76,10.82C21.79,10.62 21.73,10.4 21.59,10.25C21.45,10.09 21.24,10 21,10H15Z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M11,7h2v2h-2zM11,11h2v6h-2zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,16c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M6,19h4L10,5L6,5v14zM14,5v14h4L18,5h-4z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M21,19V5c0,-1.1 -0.9,-2 -2,-2H5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2zM8.5,13.5l2.5,3.01L14.5,12l4.5,6H5l3.5,-4.5z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M8,5v14l11,-7z" />
</vector>
@@ -1,15 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M17.3159,1h-10a2.0059,2.0059 0,0 0,-2 2L5.3159,21a2.0059,2.0059 0,0 0,2 2h10a2.0059,2.0059 0,0 0,2 -2L19.3159,3A2.0059,2.0059 0,0 0,17.3159 1ZM17.3159,21h-10L7.3159,3h10Z" />
<path
android:fillColor="#000"
android:pathData="M11.3083,5h2v5.5h-2z" />
<path
android:fillColor="#000"
android:pathData="M15.308,16l-2,0l0,-4.5l-2,0l0,4.5l-2,0l3,3l3,-3z" />
</vector>
@@ -1,12 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M6.9906,18L6.9906,6h12L18.9906,3a2.0059,2.0059 0,0 0,-2 -2h-10a2.0059,2.0059 0,0 0,-2 2L4.9906,21a2.0059,2.0059 0,0 0,2 2h10a2.0059,2.0059 0,0 0,2 -2L18.9906,18h-12ZM6.9906,3h10L16.9906,4h-10ZM16.9906,21h-10L6.9906,20h10Z" />
<path
android:fillColor="#000"
android:pathData="M21.7706,12.44l-0.02,0.03a3.5546,3.5546 0,0 0,0.05 -0.47,3.9031 3.9031,0 0,0 -0.05,-0.48l0.02,0.03 0.85,-0.68a0.5068,0.5068 0,0 0,0.12 -0.64l-0.84,-1.46a0.4986,0.4986 0,0 0,-0.61 -0.22l-1.01,0.39 0.0099,0.04a3.6135,3.6135 0,0 0,-0.8 -0.48l-0.17,-1.07a0.4879,0.4879 0,0 0,-0.49 -0.43h-1.68a0.4876,0.4876 0,0 0,-0.49 0.42l-0.17,1.08a3.6149,3.6149 0,0 0,-0.8 0.48l0.02,-0.03 -1.01,-0.39a0.4878,0.4878 0,0 0,-0.61 0.22l-0.84,1.46a0.5068,0.5068 0,0 0,0.12 0.64l0.85,0.68 0.02,-0.03a3.9148,3.9148 0,0 0,-0.05 0.48,3.915 3.915,0 0,0 0.05,0.48l-0.02,-0.03 -0.85,0.68a0.5068,0.5068 0,0 0,-0.12 0.64l0.84,1.46a0.4985,0.4985 0,0 0,0.61 0.22l1.01,-0.39 -0.02,-0.03a4.4991,4.4991 0,0 0,0.8 0.46l0.17,1.08a0.4876,0.4876 0,0 0,0.49 0.42h1.68a0.4876,0.4876 0,0 0,0.49 -0.42l0.17,-1.08a3.6138,3.6138 0,0 0,0.8 -0.48l-0.02,0.03 1.02,0.39a0.4879,0.4879 0,0 0,0.61 -0.22l0.84,-1.46a0.5068,0.5068 0,0 0,-0.12 -0.64ZM17.9906,14a2,2 0,1 1,2 -2A2.0059,2.0059 0,0 1,17.9906 14Z" />
</vector>
@@ -1,21 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M17.3159,18h-10L7.3159,16h-2v5a2.0059,2.0059 0,0 0,2 2h10a2.0059,2.0059 0,0 0,2 -2L19.3159,16h-2ZM17.3159,21h-10L7.3159,20h10Z" />
<path
android:fillColor="#000"
android:pathData="M7.3159,6h10L17.3159,8h2L19.3159,3a2.0059,2.0059 0,0 0,-2 -2h-10a2.0059,2.0059 0,0 0,-2 2L5.3159,8h2ZM7.3159,3h10L17.3159,4h-10Z" />
<path
android:fillColor="#000"
android:pathData="M22.311,12l-3,-3l0,2l-11.99,0l0,2l11.99,0l0,2l3,-3z" />
<path
android:fillColor="#000"
android:pathData="M2.3206,11h1.5v2h-1.5z" />
<path
android:fillColor="#000"
android:pathData="M4.8206,11h1.5v2h-1.5z" />
</vector>
@@ -1,21 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M7,6H17V8h2V3a2.0059,2.0059 0,0 0,-2 -2H7A2.0059,2.0059 0,0 0,5 3V8H7ZM7,3H17V4H7Z" />
<path
android:fillColor="#000"
android:pathData="M17,18L7,18L7,16L5,16v5a2.0059,2.0059 0,0 0,2 2L17,23a2.0059,2.0059 0,0 0,2 -2L19,16L17,16ZM17,21L7,21L7,20L17,20Z" />
<path
android:fillColor="#000"
android:pathData="M5.005,13l11.99,0l0,-2l-11.99,0l0,-2l-3,3l3,3l0,-2z" />
<path
android:fillColor="#000"
android:pathData="M20.4953,11h1.5v2h-1.5z" />
<path
android:fillColor="#000"
android:pathData="M17.9953,11h1.5v2h-1.5z" />
</vector>
@@ -1,12 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M17,1L7,1A2.0059,2.0059 0,0 0,5 3L5,21a2.0059,2.0059 0,0 0,2 2L17,23a2.0059,2.0059 0,0 0,2 -2L19,3A2.0059,2.0059 0,0 0,17 1ZM17,3v1.0462L7,4.0462L7,3ZM17,6.0462v12L7,18.0462v-12ZM7,21v-0.9538L17,20.0462L17,21Z" />
<path
android:fillColor="#000"
android:pathData="M9,13l3,3l3,-3l-2,0l0,-5l-2,0l0,5l-2,0z" />
</vector>
@@ -1,12 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M11.992,19l3,-3l-2,0l0,-11l-2,0l0,11l-2,0l3,3z" />
<path
android:fillColor="#000"
android:pathData="M17,1L7,1A2.0059,2.0059 0,0 0,5 3L5,21a2.0059,2.0059 0,0 0,2 2L17,23a2.0059,2.0059 0,0 0,2 -2L19,3A2.0059,2.0059 0,0 0,17 1ZM17,21L7,21L7,3L17,3Z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M17.65,6.35C16.2,4.9 14.21,4 12,4c-4.42,0 -7.99,3.58 -7.99,8s3.57,8 7.99,8c3.73,0 6.84,-2.55 7.73,-6h-2.08c-0.82,2.33 -3.04,4 -5.65,4 -3.31,0 -6,-2.69 -6,-6s2.69,-6 6,-6c1.66,0 3.14,0.69 4.22,1.78L13,11h7V4l-2.35,2.35z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92s2.92,-1.31 2.92,-2.92c0,-1.61 -1.31,-2.92 -2.92,-2.92zM18,4c0.55,0 1,0.45 1,1s-0.45,1 -1,1 -1,-0.45 -1,-1 0.45,-1 1,-1zM6,13c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1 1,0.45 1,1 -0.45,1 -1,1zM18,20.02c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1 1,0.45 1,1 -0.45,1 -1,1z"/>
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M12,16.5l4,-4h-3v-9h-2v9L8,12.5l4,4zM21,3.5h-6v1.99h6v14.03L3,19.52L3,5.49h6L9,3.5L3,3.5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h18c1.1,0 2,-0.9 2,-2v-14c0,-1.1 -0.9,-2 -2,-2z" />
</vector>
@@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M476,540L560,456L644,540L700,484L616,400L700,316L644,260L560,344L476,260L420,316L504,400L420,484L476,540ZM320,720Q287,720 263.5,696.5Q240,673 240,640L240,160Q240,127 263.5,103.5Q287,80 320,80L800,80Q833,80 856.5,103.5Q880,127 880,160L880,640Q880,673 856.5,696.5Q833,720 800,720L320,720ZM320,640L800,640Q800,640 800,640Q800,640 800,640L800,160Q800,160 800,160Q800,160 800,160L320,160Q320,160 320,160Q320,160 320,160L320,640Q320,640 320,640Q320,640 320,640ZM160,880Q127,880 103.5,856.5Q80,833 80,800L80,240L160,240L160,800Q160,800 160,800Q160,800 160,800L720,800L720,880L160,880ZM320,160L320,160Q320,160 320,160Q320,160 320,160L320,640Q320,640 320,640Q320,640 320,640L320,640Q320,640 320,640Q320,640 320,640L320,160Q320,160 320,160Q320,160 320,160Z"/>
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M1,21h22L12,2 1,21zM13,18h-2v-2h2v2zM13,14h-2v-4h2v4z" />
</vector>
@@ -12,12 +12,14 @@
<group <group
android:translateX="16" android:translateX="16"
android:translateY="16"> android:translateY="16">
<group
android:scaleX="0.025"
android:scaleY="0.025"
android:translateY="24">
<path <path
android:fillColor="@color/accent_blue" android:fillColor="@color/accent_blue"
android:pathData="M4,6H2v14c0,1.1 0.9,2 2,2h14v-2H4V6z"/> android:pathData="M320-240q-33 0-56.5-23.5T240-320v-480q0-33 23.5-56.5T320-880h480q33 0 56.5 23.5T880-800v480q0 33-23.5 56.5T800-240H320ZM160-80q-33 0-56.5-23.5T80-160v-520q0-17 11.5-28.5T120-720q17 0 28.5 11.5T160-680v520h520q17 0 28.5 11.5T720-120q0 17-11.5 28.5T680-80H160Zm360-475q0 12 10 17.5t20-.5l49-30q10-6 21-6t21 6l49 30q10 6 20 .5t10-17.5v-245H520v245Z" />
<path </group>
android:fillColor="@color/accent_blue"
android:pathData="M20,2L8,2c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM20,12l-2.5,-1.5L15,12L15,4h5v8z"/>
</group> </group>
</vector> </vector>
</foreground> </foreground>
@@ -12,9 +12,14 @@
<group <group
android:translateX="16" android:translateX="16"
android:translateY="16"> android:translateY="16">
<group
android:scaleX="0.025"
android:scaleY="0.025"
android:translateY="24">
<path <path
android:fillColor="@color/accent_blue" android:fillColor="@color/accent_blue"
android:pathData="M12,10.9c-0.61,0 -1.1,0.49 -1.1,1.1s0.49,1.1 1.1,1.1c0.61,0 1.1,-0.49 1.1,-1.1s-0.49,-1.1 -1.1,-1.1zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM14.19,14.19L6,18l3.81,-8.19L18,6l-3.81,8.19z" /> android:pathData="m335-310 202-58q20-6 34.5-20.5T592-423l58-202q3-11-5.5-19.5T625-650l-202 58q-20 6-34.5 20.5T368-537l-58 202q-3 11 5.5 19.5T335-310Zm145-110q-25 0-42.5-17.5T420-480q0-25 17.5-42.5T480-540q25 0 42.5 17.5T540-480q0 25-17.5 42.5T480-420Zm0 340q-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-80Z" />
</group>
</group> </group>
</vector> </vector>
</foreground> </foreground>
@@ -12,9 +12,14 @@
<group <group
android:translateX="16" android:translateX="16"
android:translateY="16"> android:translateY="16">
<group
android:scaleX="0.025"
android:scaleY="0.025"
android:translateY="24">
<path <path
android:fillColor="@color/accent_blue" android:fillColor="@color/accent_blue"
android:pathData="M13,3c-4.97,0 -9,4.03 -9,9L1,12l3.89,3.89 0.07,0.14L9,12L6,12c0,-3.87 3.13,-7 7,-7s7,3.13 7,7 -3.13,7 -7,7c-1.93,0 -3.68,-0.79 -4.94,-2.06l-1.42,1.42C8.27,19.99 10.51,21 13,21c4.97,0 9,-4.03 9,-9s-4.03,-9 -9,-9zM12,8v5l4.28,2.54 0.72,-1.21 -3.5,-2.08L13.5,8L12,8z" /> android:pathData="M480-120q-126 0-223-76.5T131-392q-4-15 6-27.5t27-14.5q16-2 29 6t18 24q24 90 99 147t170 57q117 0 198.5-81.5T760-480q0-117-81.5-198.5T480-760q-69 0-129 32t-101 88h70q17 0 28.5 11.5T360-600q0 17-11.5 28.5T320-560H160q-17 0-28.5-11.5T120-600v-160q0-17 11.5-28.5T160-800q17 0 28.5 11.5T200-760v54q51-64 124.5-99T480-840q75 0 140.5 28.5t114 77q48.5 48.5 77 114T840-480q0 75-28.5 140.5t-77 114q-48.5 48.5-114 77T480-120Zm40-376 100 100q11 11 11 28t-11 28q-11 11-28 11t-28-11L452-452q-6-6-9-13.5t-3-15.5v-159q0-17 11.5-28.5T480-680q17 0 28.5 11.5T520-640v144Z" />
</group>
</group> </group>
</vector> </vector>
</foreground> </foreground>
@@ -12,9 +12,14 @@
<group <group
android:translateX="16" android:translateX="16"
android:translateY="16"> android:translateY="16">
<group
android:scaleX="0.025"
android:scaleY="0.025"
android:translateY="24">
<path <path
android:fillColor="@color/accent_blue" android:fillColor="@color/accent_blue"
android:pathData="M23,12l-2.44,-2.78 0.34,-3.68 -3.61,-0.82 -1.89,-3.18L12,3 8.6,1.54 6.71,4.72l-3.61,0.81 0.34,3.68L1,12l2.44,2.78 -0.34,3.69 3.61,0.82 1.89,3.18L12,21l3.4,1.46 1.89,-3.18 3.61,-0.82 -0.34,-3.68L23,12zM13,17h-2v-2h2v2zM13,13h-2L11,7h2v6z" /> android:pathData="m326-90-58-98-110-24q-15-3-24-15.5t-7-27.5l11-113-75-86q-10-11-10-26t10-26l75-86-11-113q-2-15 7-27.5t24-15.5l110-24 58-98q8-13 22-17.5t28 1.5l104 44 104-44q14-6 28-1.5t22 17.5l58 98 110 24q15 3 24 15.5t7 27.5l-11 113 75 86q10 11 10 26t-10 26l-75 86 11 113q2 15-7 27.5T802-212l-110 24-58 98q-8 13-22 17.5T584-74l-104-44-104 44q-14 6-28 1.5T326-90Zm182.5-201.5Q520-303 520-320t-11.5-28.5Q497-360 480-360t-28.5 11.5Q440-337 440-320t11.5 28.5Q463-280 480-280t28.5-11.5Zm0-160Q520-463 520-480v-160q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640v160q0 17 11.5 28.5T480-440q17 0 28.5-11.5Z" />
</group>
</group> </group>
</vector> </vector>
</foreground> </foreground>
+1 -1
View File
@@ -34,7 +34,7 @@
android:paddingHorizontal="10dp" android:paddingHorizontal="10dp"
android:paddingVertical="8dp" android:paddingVertical="8dp"
android:scaleType="center" android:scaleType="center"
app:srcCompat="@drawable/ic_drag_handle_24dp" app:srcCompat="@drawable/rounded_drag_handle"
app:tint="?android:attr/textColorHint" app:tint="?android:attr/textColorHint"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
+2 -2
View File
@@ -25,7 +25,7 @@
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_drag_handle_24dp" app:srcCompat="@drawable/rounded_drag_handle"
app:tint="?android:attr/textColorHint" app:tint="?android:attr/textColorHint"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
@@ -96,7 +96,7 @@
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_overflow_24dp" app:srcCompat="@drawable/rounded_more_vert"
app:tint="?attr/colorOnBackground" /> app:tint="?attr/colorOnBackground" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
+11
View File
@@ -27,6 +27,7 @@ spotless {
dependencies { dependencies {
compileOnly(gradleKotlinDsl()) compileOnly(gradleKotlinDsl())
compileOnly(libs.android.gradle) compileOnly(libs.android.gradle)
compileOnly(libs.android.gradle.runtimeDependency("sdk-common"))
compileOnly(libs.kotlin.compose.compiler.gradle) compileOnly(libs.kotlin.compose.compiler.gradle)
compileOnly(libs.kotlin.gradle) compileOnly(libs.kotlin.gradle)
implementation(libs.spotless.gradle) implementation(libs.spotless.gradle)
@@ -73,3 +74,13 @@ gradlePlugin {
} }
} }
} }
fun Provider<MinimalExternalModuleDependency>.runtimeDependency(name: String): Provider<String> = map { dependency ->
configurations.detachedConfiguration(dependencies.create(dependency))
.attributes { attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME)) }
.incoming.resolutionResult.allComponents
.firstOrNull { it.moduleVersion?.name == name }
?.moduleVersion
?.toString()
?: error("${dependency.module} has no runtime dependency named $name")
}
@@ -21,6 +21,26 @@ class PluginSpotless : Plugin<Project> {
ktlint(ktlintVersion) ktlint(ktlintVersion)
trimTrailingWhitespace() trimTrailingWhitespace()
endWithNewline() endWithNewline()
forbidRegex(
"materialSymbolsRImport",
"(?m)^import mihon\\.icons\\.materialsymbols\\.R(?! as MaterialSymbolsR$)\\b.*$",
"Import mihon.icons.materialsymbols.R as MaterialSymbolsR",
)
forbidRegex(
"materialSymbolsRQualified",
"(?m)^(?!import ).*\\bmihon\\.icons\\.materialsymbols\\.R\\.",
"Use the MaterialSymbolsR import alias instead of the qualified name",
)
forbidRegex(
"customMaterialSymbolsRImport",
"(?m)^import mihon\\.icons\\.custommaterialsymbols\\.R(?! as CustomMaterialSymbolsR$)\\b.*$",
"Import mihon.icons.custommaterialsymbols.R as CustomMaterialSymbolsR",
)
forbidRegex(
"customMaterialSymbolsRQualified",
"(?m)^(?!import ).*\\bmihon\\.icons\\.custommaterialsymbols\\.R\\.",
"Use the CustomMaterialSymbolsR import alias instead of the qualified name",
)
} }
kotlinGradle { kotlinGradle {
@@ -0,0 +1,49 @@
package mihon.gradle.tasks
import com.android.ide.common.vectordrawable.Svg2Vector
import org.gradle.api.DefaultTask
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.PathSensitive
import org.gradle.api.tasks.PathSensitivity
import org.gradle.api.tasks.TaskAction
import java.io.ByteArrayOutputStream
abstract class GenerateVectorDrawablesTask : DefaultTask() {
@get:InputFiles
@get:PathSensitive(PathSensitivity.RELATIVE)
abstract val svgFiles: ConfigurableFileCollection
@get:OutputDirectory
abstract val outputDir: DirectoryProperty
@TaskAction
fun action() {
val drawableDir = outputDir.get().dir("drawable").asFile.apply {
deleteRecursively()
mkdirs()
}
svgFiles.forEach { svg ->
val output = ByteArrayOutputStream()
val error = Svg2Vector.parseSvgToXml(svg.toPath(), output)
check(error.isEmpty()) { "${svg.name}: $error" }
val folder = svg.parentFile.name
var content = output.toString(Charsets.UTF_8).replace(blackFill, "@android:color/white")
if (folder.startsWith("autoMirrored")) {
content = content.replaceFirst("<vector ", "<vector android:autoMirrored=\"true\" ")
}
val name = "${folder.replace(upperCase) { "_" + it.value.lowercase() }}_${svg.nameWithoutExtension}"
drawableDir.resolve("$name.xml").writeText(content)
}
}
private companion object {
val blackFill = "#FF000000"
val upperCase = "[A-Z]".toRegex()
}
}
@@ -0,0 +1,44 @@
plugins {
alias(mihonx.plugins.android.library)
alias(mihonx.plugins.compose)
alias(mihonx.plugins.spotless)
alias(libs.plugins.valkyrie)
}
android {
namespace = "mihon.icons.custommaterialsymbols"
}
spotless {
format("svg") {
target("src/**/*.svg")
trimTrailingWhitespace()
endWithNewline()
}
}
valkyrie {
packageName = "mihon.icons.custommaterialsymbols"
generateAtSync = true
imageVector {
suppressUnusedReceiverWarning = true
}
iconPack {
name = "CustomMaterialSymbols"
targetSourceSet = "main"
nested {
name = "Rounded"
sourceFolder = "rounded"
autoMirror = false
}
}
}
dependencies {
api(libs.androidx.compose.ui)
}
@@ -0,0 +1,8 @@
<!--
Custom Material Symbols Rounded 'crop_off'.
Crop from Material Symbols Rounded 'crop'.
Off slash drawn at the Material Symbols stroke weight; it joins the lower-left arms and is cut clear on its upper-right side.
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="M240 -920Q223 -920 211.5 -908.5Q200 -897 200 -880L200 -873.1L280 -793.1L280 -880Q280 -897 268.5 -908.5Q257 -920 240 -920ZM280 -793.1L280 -793.1L280 -793.1L280 -793.1ZM360 -760L360 -713.1L360 -713.1L393.1 -680L680 -680L680 -393.1L713.1 -360L760 -360L760 -680Q760 -713 736.5 -736.5Q713 -760 680 -760ZM280 -623.4L623.4 -280L280 -280L280 -623.4ZM793.1 -280L873.1 -200L880 -200Q897 -200 908.5 -211.5Q920 -223 920 -240Q920 -257 908.5 -268.5Q897 -280 880 -280ZM120 -880C109.8 -880 99.5 -876.1 91.7 -868.3C76.1 -852.7 76.1 -827.3 91.7 -811.7L143.4 -760L80 -760Q63 -760 51.5 -748.5Q40 -737 40 -720Q40 -703 51.5 -691.5Q63 -680 80 -680L200 -680L200 -280Q200 -247 223.5 -223.5Q247 -200 280 -200L680 -200L680 -80Q680 -63 691.5 -51.5Q703 -40 720 -40Q737 -40 748.5 -51.5Q760 -63 760 -80L760 -143.4L811.7 -91.7C819.5 -83.9 829.8 -80 840 -80C850.2 -80 860.5 -83.9 868.3 -91.7C883.9 -107.3 883.9 -132.7 868.3 -148.3L148.3 -868.3C140.5 -876.1 130.2 -880 120 -880Z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,7 @@
<!--
Custom Material Symbols Rounded 'done_previous'.
Check and arrow drawn at the Material Symbols stroke weight, following the layout of the former ic_done_prev icon.
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="M790 -730C779.8 -730 769.5 -726.1 761.7 -718.3L360 -316.6L360 -316.6L198.3 -478.3C190.5 -486.1 180.2 -490 170 -490C159.8 -490 149.5 -486.1 141.7 -478.3C126.1 -462.7 126.1 -437.3 141.7 -421.7L331.7 -231.7C339.5 -223.9 349.8 -220 360 -220C370.2 -220 380.5 -223.9 388.3 -231.7L818.3 -661.7C833.9 -677.3 833.9 -702.7 818.3 -718.3C810.5 -726.1 800.2 -730 790 -730ZM720 -420C697.9 -420 680 -402.1 680 -380L680 -226.6L628.3 -278.3C620.5 -286.1 610.2 -290 600 -290C589.8 -290 579.5 -286.1 571.7 -278.3C556.1 -262.7 556.1 -237.3 571.7 -221.7L691.7 -101.7L691.7 -101.7C691.8 -101.7 691.8 -101.6 691.8 -101.6L691.8 -101.6C695.6 -97.8 700 -95 704.7 -93L704.7 -93C709.4 -91.1 714.6 -90 720 -90C725.4 -90 730.6 -91.1 735.3 -93L735.3 -93C740 -95 744.4 -97.8 748.2 -101.6L748.2 -101.6C748.2 -101.6 748.2 -101.7 748.3 -101.7L748.3 -101.7L868.3 -221.7C883.9 -237.3 883.9 -262.7 868.3 -278.3C860.5 -286.1 850.2 -290 840 -290C829.8 -290 819.5 -286.1 811.7 -278.3L760 -226.6L760 -380C760 -402.1 742.1 -420 720 -420Z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,7 @@
<!--
Custom Material Symbols Rounded 'download_arrow'.
Arrow from Material Symbols Rounded 'downloading'.
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="M479 -680Q462 -680 450.5 -668.5Q439 -657 439 -640L439 -435L364 -511Q352 -523 335.5 -523Q319 -523 307 -511Q295 -499 294.5 -482.5Q294 -466 306 -454L451 -308Q462 -297 479 -297Q496 -297 507 -308L650 -451Q662 -463 662.5 -480Q663 -497 651 -509Q639 -521 622 -521Q605 -521 593 -509L519 -435L519 -640Q519 -657 507.5 -668.5Q496 -680 479 -680Z"/></svg>

After

Width:  |  Height:  |  Size: 618 B

@@ -0,0 +1,8 @@
<!--
Custom Material Symbols Rounded 'download_circle'.
Ring from Material Symbols Rounded 'arrow_circle_down'.
Arrow from Material Symbols Rounded 'downloading'.
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="M479 -680Q462 -680 450.5 -668.5Q439 -657 439 -640L439 -435L364 -511Q352 -523 335.5 -523Q319 -523 307 -511Q295 -499 294.5 -482.5Q294 -466 306 -454L451 -308Q462 -297 479 -297Q496 -297 507 -308L650 -451Q662 -463 662.5 -480Q663 -497 651 -509Q639 -521 622 -521Q605 -521 593 -509L519 -435L519 -640Q519 -657 507.5 -668.5Q496 -680 479 -680ZM480 -810C662.3 -810 810 -662.3 810 -480C810 -297.7 662.3 -150 480 -150C297.7 -150 150 -297.7 150 -480C150 -662.3 297.7 -810 480 -810ZM480 -880Q397 -880 324 -848.5Q251 -817 197 -763Q143 -709 111.5 -636Q80 -563 80 -480Q80 -397 111.5 -324Q143 -251 197 -197Q251 -143 324 -111.5Q397 -80 480 -80Q563 -80 636 -111.5Q709 -143 763 -197Q817 -251 848.5 -324Q880 -397 880 -480Q880 -563 848.5 -636Q817 -709 763 -763Q709 -817 636 -848.5Q563 -880 480 -880Z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@@ -0,0 +1,9 @@
<!--
Custom Material Symbols Rounded 'reader_left_to_right'.
Frame from Material Symbols Rounded 'mobile_gear'.
Arrow from Material Symbols Rounded 'mobile_arrow_right', moved left so its tail runs into the frame.
Page edge drawn at the Material Symbols stroke weight.
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="M600 -660C577.9 -660 560 -642.1 560 -620L560 -340C560 -317.9 577.9 -300 600 -300C622.1 -300 640 -317.9 640 -340L640 -620C640 -642.1 622.1 -660 600 -660ZM680 -840L680 -120L280 -120L280 -440L383 -440L348 -404Q337 -393 337 -376.5Q337 -360 349 -348Q360 -337 377 -337Q394 -337 405 -348L509 -452Q515 -458 517.5 -465Q520 -472 520 -480Q520 -488 517.5 -495Q515 -502 509 -508L405 -612Q394 -623 377.5 -623.5Q376.8 -623.5 376.2 -623.5Q360.5 -623.5 349 -612Q338 -601 337.5 -584.5Q337 -568 348 -556L383 -520L280 -520L280 -840ZM280 -920Q247 -920 223.5 -896.5Q200 -873 200 -840L200 -120Q200 -87 223.5 -63.5Q247 -40 280 -40L680 -40Q713 -40 736.5 -63.5Q760 -87 760 -120L760 -524Q778 -531 789 -546Q800 -561 800 -580L800 -660Q800 -679 789 -694Q778 -709 760 -716L760 -840Q760 -873 736.5 -896.5Q713 -920 680 -920Z"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,8 @@
<!--
Custom Material Symbols Rounded 'reader_long_strip'.
Frame from Material Symbols Rounded 'mobile_gear'.
Full-height arrow drawn at the Material Symbols stroke weight.
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="M480 -800C457.9 -800 440 -782.1 440 -760L440 -316.6L440 -316.6L440 -316.6L440 -316.6L408.3 -348.3C400.5 -356.1 390.2 -360 380 -360C369.8 -360 359.5 -356.1 351.7 -348.3C336.1 -332.7 336.1 -307.3 351.7 -291.7L451.7 -191.7C451.7 -191.7 451.8 -191.7 451.8 -191.6L451.8 -191.6C455.6 -187.8 460 -185 464.7 -183L464.7 -183C469.4 -181.1 474.6 -180 480 -180C485.4 -180 490.6 -181.1 495.3 -183L495.3 -183C500 -185 504.4 -187.8 508.2 -191.6L508.2 -191.6C508.2 -191.7 508.3 -191.7 508.3 -191.7L608.3 -291.7C623.9 -307.3 623.9 -332.7 608.3 -348.3C600.5 -356.1 590.2 -360 580 -360C569.8 -360 559.5 -356.1 551.7 -348.3L520 -316.6L520 -760C520 -782.1 502.1 -800 480 -800ZM680 -840L680 -120L280 -120L280 -840ZM280 -920Q247 -920 223.5 -896.5Q200 -873 200 -840L200 -120Q200 -87 223.5 -63.5Q247 -40 280 -40L680 -40Q713 -40 736.5 -63.5Q760 -87 760 -120L760 -524Q778 -531 789 -546Q800 -561 800 -580L800 -660Q800 -679 789 -694Q778 -709 760 -716L760 -840Q760 -873 736.5 -896.5Q713 -920 680 -920Z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,8 @@
<!--
Custom Material Symbols Rounded 'reader_long_strip_gaps'.
Frame from Material Symbols Rounded 'mobile_gear'.
Full-height arrow with a gap, drawn at the Material Symbols stroke weight.
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="M480 -800C457.9 -800 440 -782.1 440 -760L440 -600C440 -577.9 457.9 -560 480 -560C502.1 -560 520 -577.9 520 -600L520 -760C520 -782.1 502.1 -800 480 -800ZM480 -510C457.9 -510 440 -492.1 440 -470L440 -316.6L408.3 -348.3C400.5 -356.1 390.2 -360 380 -360C369.8 -360 359.5 -356.1 351.7 -348.3C336.1 -332.7 336.1 -307.3 351.7 -291.7L451.7 -191.7C451.7 -191.7 451.8 -191.7 451.8 -191.6L451.8 -191.6C455.6 -187.8 460 -185 464.7 -183L464.7 -183C469.4 -181.1 474.6 -180 480 -180C485.4 -180 490.6 -181.1 495.3 -183L495.3 -183C500 -185 504.4 -187.8 508.2 -191.6L508.2 -191.6C508.2 -191.7 508.3 -191.7 508.3 -191.7L608.3 -291.7C623.9 -307.3 623.9 -332.7 608.3 -348.3C600.5 -356.1 590.2 -360 580 -360C569.8 -360 559.5 -356.1 551.7 -348.3L520 -316.6L520 -470C520 -492.1 502.1 -510 480 -510ZM680 -840L680 -120L280 -120L280 -840ZM280 -920Q247 -920 223.5 -896.5Q200 -873 200 -840L200 -120Q200 -87 223.5 -63.5Q247 -40 280 -40L680 -40Q713 -40 736.5 -63.5Q760 -87 760 -120L760 -524Q778 -531 789 -546Q800 -561 800 -580L800 -660Q800 -679 789 -694Q778 -709 760 -716L760 -840Q760 -873 736.5 -896.5Q713 -920 680 -920Z"/></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@@ -0,0 +1,10 @@
<!--
Custom Material Symbols Rounded 'reader_right_to_left'.
Mirror of 'reader_left_to_right' inside the frame; the frame keeps its side button on the right.
Frame from Material Symbols Rounded 'mobile_gear'.
Arrow from Material Symbols Rounded 'mobile_arrow_right', mirrored.
Page edge drawn at the Material Symbols stroke weight.
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 -660C337.9 -660 320 -642.1 320 -620L320 -340C320 -317.9 337.9 -300 360 -300C382.1 -300 400 -317.9 400 -340L400 -620C400 -642.1 382.1 -660 360 -660ZM680 -840L680 -520L577 -520L612 -556Q623 -568 622.5 -584.5Q622 -601 611 -612Q599.5 -623.5 583.8 -623.5Q583.2 -623.5 582.5 -623.5Q566 -623 555 -612L451 -508Q445 -502 442.5 -495Q440 -488 440 -480Q440 -472 442.5 -465Q445 -458 451 -452L555 -348Q566 -337 583 -337Q600 -337 611 -348Q623 -360 623 -376.5Q623 -393 612 -404L577 -440L680 -440L680 -120L280 -120L280 -840ZM280 -920Q247 -920 223.5 -896.5Q200 -873 200 -840L200 -120Q200 -87 223.5 -63.5Q247 -40 280 -40L680 -40Q713 -40 736.5 -63.5Q760 -87 760 -120L760 -524Q778 -531 789 -546Q800 -561 800 -580L800 -660Q800 -679 789 -694Q778 -709 760 -716L760 -840Q760 -873 736.5 -896.5Q713 -920 680 -920Z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

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