diff --git a/src/components/home/HomeContent.tsx b/src/components/home/HomeContent.tsx index 58045ae..b2731f0 100644 --- a/src/components/home/HomeContent.tsx +++ b/src/components/home/HomeContent.tsx @@ -25,27 +25,32 @@ export function HomeContent({ data, refreshHome }: HomeContentProps) { // }); const optimizeSeriesData = (series: KomgaSeries[]) => { - return series.map(({ id, metadata, booksCount }) => ({ + return series.map(({ id, metadata, booksCount, booksReadCount }) => ({ id, metadata: { title: metadata.title }, booksCount, + booksReadCount })); }; const optimizeHeroSeriesData = (series: KomgaSeries[]) => { - return series.map(({ id, metadata }) => ({ + return series.map(({ id, metadata, booksCount, booksReadCount }) => ({ id, metadata: { title: metadata.title }, + booksCount, + booksReadCount })); }; const optimizeBookData = (books: KomgaBook[]) => { - return books.map(({ id, metadata }) => ({ + return books.map(({ id, metadata, readProgress, media }) => ({ id, metadata: { title: metadata.title, number: metadata.number, }, + readProgress, + media })); }; diff --git a/src/components/home/MediaRow.tsx b/src/components/home/MediaRow.tsx index 4b8c34e..2dd83f1 100644 --- a/src/components/home/MediaRow.tsx +++ b/src/components/home/MediaRow.tsx @@ -14,6 +14,7 @@ interface BaseItem { interface OptimizedSeries extends BaseItem { booksCount: number; + booksReadCount: number; } interface OptimizedBook extends BaseItem { @@ -124,6 +125,9 @@ function MediaCard({ item, onClick }: MediaCardProps) { id={item.id} alt={`Couverture de ${title}`} quality={100} + readBooks={isSeries ? item.booksReadCount : undefined} + totalBooks={isSeries ? item.booksCount : undefined} + isCompleted={isSeries ? item.booksCount === item.booksReadCount : undefined} /> {/* Overlay avec les informations au survol */}
diff --git a/src/components/ui/cover.tsx b/src/components/ui/cover.tsx index 05bacba..757fba6 100644 --- a/src/components/ui/cover.tsx +++ b/src/components/ui/cover.tsx @@ -44,19 +44,19 @@ export function Cover(props: CoverProps) { } = props; const imageUrl = getImageUrl(type, id); - + const showProgress = () => { if (type === "book") { const { currentPage, totalPages } = props; return currentPage && totalPages && currentPage > 0 && !isCompleted ? ( - + ) : null; } if (type === "series") { const { readBooks, totalBooks } = props; return readBooks && totalBooks && readBooks > 0 && !isCompleted ? ( - + ) : null; } }; diff --git a/src/components/ui/progress-bar.tsx b/src/components/ui/progress-bar.tsx index 4a5dd09..871d467 100644 --- a/src/components/ui/progress-bar.tsx +++ b/src/components/ui/progress-bar.tsx @@ -1,16 +1,20 @@ interface ProgressBarProps { progress: number; total: number; + type: "series" | "book"; } -export function ProgressBar({ progress, total }: ProgressBarProps) { +export function ProgressBar({ progress, total, type }: ProgressBarProps) { const percentage = Math.round((progress / total) * 100); + const barColor = type === "series" + ? "bg-gradient-to-r from-purple-500 to-pink-500" + : "bg-gradient-to-r from-blue-500 to-cyan-500"; return (