-
-
-
- {series.booksCount} tome{series.booksCount > 1 ? "s" : ""}
-
-
-
-
- {statusInfo.label}
-
-
+ {/* Overlay avec les informations au survol */}
+
+
{series.metadata.title}
+
+
+ {statusInfo.label}
+
+
+ {series.booksCount} tome{series.booksCount > 1 ? "s" : ""}
+
diff --git a/src/components/series/BookGrid.tsx b/src/components/series/BookGrid.tsx
index f4d93e1..6476c50 100644
--- a/src/components/series/BookGrid.tsx
+++ b/src/components/series/BookGrid.tsx
@@ -11,6 +11,38 @@ interface BookGridProps {
getBookThumbnailUrl: (bookId: string) => string;
}
+// Fonction utilitaire pour obtenir les informations de statut de lecture
+const getReadingStatusInfo = (book: KomgaBook) => {
+ if (!book.readProgress) {
+ return {
+ label: "Non lu",
+ className: "bg-yellow-500/10 text-yellow-500",
+ };
+ }
+
+ if (book.readProgress.completed) {
+ const readDate = book.readProgress.readDate
+ ? new Date(book.readProgress.readDate).toLocaleDateString()
+ : null;
+ return {
+ label: readDate ? `Lu le ${readDate}` : "Lu",
+ className: "bg-green-500/10 text-green-500",
+ };
+ }
+
+ if (book.readProgress.page > 0) {
+ return {
+ label: `Page ${book.readProgress.page}/${book.media.pagesCount}`,
+ className: "bg-blue-500/10 text-blue-500",
+ };
+ }
+
+ return {
+ label: "Non lu",
+ className: "bg-yellow-500/10 text-yellow-500",
+ };
+};
+
export function BookGrid({ books, onBookClick, getBookThumbnailUrl }: BookGridProps) {
if (!books.length) {
return (
@@ -22,26 +54,34 @@ export function BookGrid({ books, onBookClick, getBookThumbnailUrl }: BookGridPr
return (
- {books.map((book) => (
-
- ))}
+ {books.map((book) => {
+ const statusInfo = getReadingStatusInfo(book);
+ return (
+
+ );
+ })}
);
}