import { useState } from 'react'; import { generatePath, Link } from 'react-router'; import styles from './poster-card.module.css'; import { CardRows } from '/@/renderer/components/card/card-rows'; import { Image } from '/@/shared/components/image/image'; import { Skeleton } from '/@/shared/components/skeleton/skeleton'; import { Stack } from '/@/shared/components/stack/stack'; import { Album, AlbumArtist, Artist, LibraryItem } from '/@/shared/types/domain-types'; import { CardRoute, CardRow, Play, PlayQueueAddOptions } from '/@/shared/types/types'; interface BaseGridCardProps { controls: { cardRows: CardRow[] | CardRow[] | CardRow[]; handleFavorite: (options: { id: string[]; isFavorite: boolean; itemType: LibraryItem; serverId: string; }) => void; handlePlayQueueAdd: ((options: PlayQueueAddOptions) => void) | undefined; itemType: LibraryItem; playButtonBehavior: Play; route: CardRoute; }; data: any; isLoading?: boolean; } export const PosterCard = ({ controls, data, isLoading, uniqueId, }: BaseGridCardProps & { uniqueId: string }) => { const [isHovered, setIsHovered] = useState(false); if (!isLoading) { const path = generatePath( controls.route.route as string, controls.route.slugs?.reduce((acc, slug) => { return { ...acc, [slug.slugProperty]: data[slug.idProperty], }; }, {}), ); return (
setIsHovered(true)} onMouseLeave={() => setIsHovered(false)} > {/* */}
); } return (
{(controls?.cardRows || []).map((row, index) => ( ))}
); };