/* * Copyright (C) Contributors to the Suwayomi project * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ import Card from '@mui/material/Card/Card'; import CardContent from '@mui/material/CardContent/CardContent'; import CardActionArea from '@mui/material/CardActionArea/CardActionArea'; import Avatar from '@mui/material/Avatar/Avatar'; import Box from '@mui/material/Box/Box'; import Stack from '@mui/material/Stack/Stack'; import Tooltip from '@mui/material/Tooltip/Tooltip'; import { isMobile } from 'react-device-detect'; import { Link as RouterLink } from 'react-router-dom'; import { useRef } from 'react'; import { SpinnerImage } from '@/components/util/SpinnerImage.tsx'; import { TypographyMaxLines } from '@/components/atoms/TypographyMaxLines.tsx'; import { SpecificMangaCardProps } from '@/components/manga/MangaCard.types.tsx'; import { Mangas } from '@/lib/data/Mangas.ts'; import { MangaOptionButton } from '@/components/manga/MangaOptionButton.tsx'; export const MangaListCard = ({ manga, longPressBind, popupState, handleClick, mangaLinkTo, selected, inLibraryIndicator, isInLibrary, handleSelection, continueReadingButton, mangaBadges, mode, }: SpecificMangaCardProps) => { const optionButtonRef = useRef(null); const { id, title } = manga; return ( popupState.open(optionButtonRef.current))} sx={{ touchCallout: 'none', '@media (hover: hover) and (pointer: fine)': { '&:hover .manga-option-button': { visibility: 'visible', pointerEvents: 'all', }, }, '&:hover .source-manga-library-state-button': { display: isMobile ? 'none' : 'inline-flex', }, '&:hover .source-manga-library-state-indicator': { display: mode === 'source' ? 'none' : 'inline-flex', }, }} > {title} {mangaBadges} {continueReadingButton} ); };