Manga can be added to the library while they have not been initialized yet.
Thus, for these cases, the reader is broken in case it gets opened.
To prevent this, the continue read button should not be shown in the library
* Require "Theme" to be passed to "SxProps"
Decreases typescript performance otherwise
* Disallow "top" and "third-level" MUI imports
* Exclude "node_modules" in tsconfig
In case the migration search was started by clicking on a manga card from the migration page the manga title was not passed to the search and thus was missing from the page title
* Extract CategorySelect usage into hook
* Extract logic to change manga in library state into hook
* Change manga in library state on long press when browsing source
* Move button icon on top of text on small screens
* Fix colors of buttons
In case a manga is in the library all buttons were colored blue instead of only the library button.
Use white as default color since buttons can also be disabled and with a grey default color it's not easy to tell if the button is disabled or not
* Remove wrapping "button" inside "a" tag
* Create "Categories" util class
* Only show add to library category selection in case categories exist
* Add edit categories button in select categories dialog
* Add option to disable add to library dialog to the dialog
In case the fetch timestamp of a manga changed, it's possible that the thumbnail has changed as well, thus, the currently cached image should be ignored
* Prevent TypeError when deselecting items from a specific key
This was noticed when changing the categories of a manga to a category without any selected mangas, in this case, when trying to deselect a manga after changing the categories, a TypeError was thrown which resulted in a white screen
* Remove duplicates from the list of all selected ids
* Update state via setter
* Clear selection after disabling the library selection mode
* Remove console log
For a single manga the "mangaId" should be passed while "mangaIds" is empty, however, the "mangaIds" were passed as an empty array which caused an empty array of manga ids to be passed with the mutation
* Move menu components into new dir
* Move chapter components into new dir
* Extract menu helper functions
* Move "SelectionFAB" to "collection" dir
* Move debounce hook to global utils dir
* Rename manga "hooks" to "useRefreshManga"
* Extract chapter actions into "Chapters"
* Extract chapter action menu into component
* Rename "SelectionFABActionItem" to "MenuItem"
* Decouple "MenuItem" from "SelectionFAB"
* Use "MenuItem" in "ActionMenus"
* Merge chapter action menus
* Simplify chapter "mark as read" action