feat(tv): add Apple TV+ style hero carousel to home page

This commit is contained in:
Fredrik Burmester
2026-01-24 23:43:40 +01:00
parent c215fda973
commit 1f454c0f12
17 changed files with 738 additions and 1704 deletions

View File

@@ -7,7 +7,7 @@ import { WatchedIndicator } from "@/components/WatchedIndicator";
import { apiAtom } from "@/providers/JellyfinProvider";
import { getPrimaryImageUrl } from "@/utils/jellyfin/image/getPrimaryImageUrl";
export const TV_POSTER_WIDTH = 210;
export const TV_POSTER_WIDTH = 260;
type MoviePosterProps = {
item: BaseItemDto;
@@ -24,7 +24,7 @@ const MoviePoster: React.FC<MoviePosterProps> = ({
return getPrimaryImageUrl({
api,
item,
width: 420, // 2x for quality on large screens
width: 520, // 2x for quality on large screens
});
}, [api, item]);

View File

@@ -6,7 +6,7 @@ import { View } from "react-native";
import { apiAtom } from "@/providers/JellyfinProvider";
import { getPrimaryImageUrl } from "@/utils/jellyfin/image/getPrimaryImageUrl";
export const TV_POSTER_WIDTH = 210;
export const TV_POSTER_WIDTH = 260;
type SeriesPosterProps = {
item: BaseItemDto;
@@ -18,12 +18,12 @@ const SeriesPoster: React.FC<SeriesPosterProps> = ({ item }) => {
const url = useMemo(() => {
if (item.Type === "Episode") {
return `${api?.basePath}/Items/${item.SeriesId}/Images/Primary?fillHeight=630&quality=80&tag=${item.SeriesPrimaryImageTag}`;
return `${api?.basePath}/Items/${item.SeriesId}/Images/Primary?fillHeight=780&quality=80&tag=${item.SeriesPrimaryImageTag}`;
}
return getPrimaryImageUrl({
api,
item,
width: 420, // 2x for quality on large screens
width: 520, // 2x for quality on large screens
});
}, [api, item]);