import {useTrans} from '@common/i18n/use-trans'; import {message} from '@common/i18n/message'; import clsx from 'clsx'; import {ImageSize, useImageSrc} from '@app/images/use-image-src'; import {Episode} from '@app/titles/models/episode'; import {EpisodeLink} from '@app/episodes/episode-link'; import {Title} from '@app/titles/models/title'; import {ReactNode} from 'react'; import {Link} from 'react-router-dom'; import {IconButton} from '@common/ui/buttons/icon-button'; import {getWatchLink} from '@app/videos/watch-page/get-watch-link'; import {MediaPlayIcon} from '@common/icons/media/media-play'; import {MovieIcon} from '@common/icons/material/Movie'; interface Props { title: Title; episode: Episode; seasonNumber?: number; className?: string; size?: string; lazy?: boolean; srcSize?: ImageSize; children?: ReactNode; aspect?: string; link?: string; wrapWithLink?: boolean; showPlayButton?: boolean; rightAction?: ReactNode; } export function EpisodePoster({ episode, title, seasonNumber, className, size, srcSize, lazy = true, children, aspect = 'aspect-video', link, wrapWithLink = true, showPlayButton, rightAction, }: Props) { const {trans} = useTrans(); const src = useImageSrc(episode.poster, {size: srcSize}); const imageClassName = clsx( 'w-full h-full object-cover bg-fg-base/4', !src ? 'flex items-center justify-center' : 'block', ); let image = src ? ( {trans(message('Poster ) : ( ); const playButton = showPlayButton && episode.primary_video ? ( ) : null; if (wrapWithLink) { image = link ? ( {image} ) : ( {image} ); } return (
{image} {playButton} {children &&
{children}
} {wrapWithLink && (
)} {rightAction && (
{rightAction}
)}
); }