import { Poster } from "./Poster"; import { ReleaseChips } from "./Chips"; const profile_lists = { // 0: "Не смотрю", 1: { name: "Смотрю", bg_color: "bg-green-500" }, 2: { name: "В планах", bg_color: "bg-purple-500" }, 3: { name: "Просмотрено", bg_color: "bg-blue-500" }, 4: { name: "Отложено", bg_color: "bg-yellow-500" }, 5: { name: "Брошено", bg_color: "bg-red-500" }, }; export const PosterWithStuff = (props: { image: string; title_ru: string; title_original: string; description?: string; genres?: string; grade?: number; id: number; settings?: { showGenres?: boolean; showDescription?: boolean; }; chipsSettings?: { enabled: boolean; gradeHidden?: boolean; statusHidden?: boolean; categoryHidden?: boolean; episodesHidden?: boolean; listHidden?: boolean; favHidden?: boolean; lastWatchedHidden?: boolean; }; profile_list_status?: number; status?: { name: string; }; category?: { name: string; }; status_id?: number; episodes_released?: string; episodes_total?: string; is_favorite?: boolean; }) => { const genres = []; const settings = { showGenres: true, showDescription: true, ...props.settings, }; const chipsSettings = props.chipsSettings || {} const grade = props.grade ? Number(props.grade.toFixed(1)) : null; const profile_list_status = props.profile_list_status || null; let user_list = null; if (profile_list_status != null || profile_list_status != 0) { user_list = profile_lists[profile_list_status]; } if (props.genres) { const genres_array = props.genres.split(","); genres_array.forEach((genre) => { genres.push(genre.trim()); }); } return ( <div className="relative w-full h-full overflow-hidden rounded-lg group"> <div className="absolute z-20 top-2 left-2 right-2"> <ReleaseChips {...props} user_list={user_list} grade={grade} settings={chipsSettings} ></ReleaseChips> </div> <div className="absolute z-20 bottom-2 left-2 right-2 lg:translate-y-[100%] group-hover:lg:translate-y-0 transition-transform"> <div className="lg:-translate-y-[calc(100%_+_1rem)] group-hover:lg:translate-y-0 transition-transform"> {settings.showGenres && genres.length > 0 && genres.map((genre: string, index: number) => { return ( <span key={`release_${props.id}_genre_${genre}_${index}`} className="font-light leading-none text-white md:text-sm lg:text-base xl:text-lg" > {index > 0 && ", "} {genre} </span> ); })} {props.title_ru && ( <p className="py-1 text-xl font-bold leading-none text-white md:text-2xl md:py-0"> {props.title_ru} </p> )} {props.title_original && ( <p className="text-sm leading-none text-gray-300 md:text-base"> {props.title_original} </p> )} </div> {settings.showDescription && props.description && ( <p className="mt-2 text-sm font-light leading-none text-white lg:text-base xl:text-lg line-clamp-4"> {props.description} </p> )} </div> <div className="absolute w-full h-full rounded-b-lg bg-gradient-to-t from-black to-transparent"></div> <Poster image={props.image} className="w-auto h-auto min-w-full min-h-full flex-grow-1" ></Poster> </div> ); };