diff --git a/src/components/library/SeriesList.tsx b/src/components/library/SeriesList.tsx
index 9d5af38..17201aa 100644
--- a/src/components/library/SeriesList.tsx
+++ b/src/components/library/SeriesList.tsx
@@ -11,10 +11,12 @@ import { formatDate } from "@/lib/utils";
interface SeriesListProps {
series: KomgaSeries[];
+ isCompact?: boolean;
}
interface SeriesListItemProps {
series: KomgaSeries;
+ isCompact?: boolean;
}
// Utility function to get reading status info
@@ -49,7 +51,7 @@ const getReadingStatusInfo = (series: KomgaSeries, t: (key: string, options?: an
};
};
-function SeriesListItem({ series }: SeriesListItemProps) {
+function SeriesListItem({ series, isCompact = false }: SeriesListItemProps) {
const router = useRouter();
const { t } = useTranslate();
@@ -64,6 +66,60 @@ function SeriesListItem({ series }: SeriesListItemProps) {
const statusInfo = getReadingStatusInfo(series, t);
+ if (isCompact) {
+ return (
+
+ {/* Couverture compacte */}
+
+
+
+
+ {/* Contenu compact */}
+
+ {/* Titre et statut */}
+
+
+ {series.metadata.title}
+
+
+ {statusInfo.label}
+
+
+
+ {/* Métadonnées minimales */}
+
+
+
+
+ {series.booksCount === 1
+ ? t("series.book", { count: 1 })
+ : t("series.books", { count: series.booksCount })}
+
+
+ {series.booksMetadata?.authors && series.booksMetadata.authors.length > 0 && (
+
+
+
+ {series.booksMetadata.authors[0].name}
+
+
+ )}
+
+
+
+
{series.map((seriesItem) => (
-
+
))}
);
diff --git a/src/components/series/BookList.tsx b/src/components/series/BookList.tsx
index ce99ea3..beeb349 100644
--- a/src/components/series/BookList.tsx
+++ b/src/components/series/BookList.tsx
@@ -17,15 +17,17 @@ import { BookOfflineButton } from "@/components/ui/book-offline-button";
interface BookListProps {
books: KomgaBook[];
onBookClick: (book: KomgaBook) => void;
+ isCompact?: boolean;
}
interface BookListItemProps {
book: KomgaBook;
onBookClick: (book: KomgaBook) => void;
onSuccess: (book: KomgaBook, action: "read" | "unread") => void;
+ isCompact?: boolean;
}
-function BookListItem({ book, onBookClick, onSuccess }: BookListItemProps) {
+function BookListItem({ book, onBookClick, onSuccess, isCompact = false }: BookListItemProps) {
const { t } = useTranslate();
const { isAccessible } = useBookOfflineStatus(book.id);
@@ -78,6 +80,74 @@ function BookListItem({ book, onBookClick, onSuccess }: BookListItemProps) {
? t("navigation.volume", { number: book.metadata.number })
: book.name);
+ if (isCompact) {
+ return (
+
+ {/* Couverture compacte */}
+
+
+
+
+ {/* Contenu compact */}
+
+ {/* Titre et statut */}
+
+
+ {title}
+
+
+ {statusInfo.label}
+
+
+
+ {/* Métadonnées minimales */}
+
+ {book.metadata.number && (
+
{t("navigation.volume", { number: book.metadata.number })}
+ )}
+
+
+
+ {totalPages} {totalPages > 1 ? t("books.pages_plural") : t("books.pages")}
+
+
+ {book.metadata.authors && book.metadata.authors.length > 0 && (
+
+
+
+ {book.metadata.authors[0].name}
+
+
+ )}
+
+
+
+ );
+ }
+
return (
+
{localBooks.map((book) => (
))}
diff --git a/src/components/series/PaginatedBookGrid.tsx b/src/components/series/PaginatedBookGrid.tsx
index 2031161..4b63788 100644
--- a/src/components/series/PaginatedBookGrid.tsx
+++ b/src/components/series/PaginatedBookGrid.tsx
@@ -115,7 +115,7 @@ export function PaginatedBookGrid({
- {viewMode === "grid" &&
}
+
@@ -123,7 +123,7 @@ export function PaginatedBookGrid({
{viewMode === "grid" ? (
) : (
-
+
)}