feat(series): add selectable cover modes for collapsed series cards

Allow readers to choose which representative series cover appears in collapsed grid view so browsing can prioritize first, latest, or first unread volumes.

Closes #160
This commit is contained in:
neon
2026-05-31 15:10:00 +00:00
parent 0b3a96cbe3
commit 7a1b0120b8
15 changed files with 610 additions and 8 deletions
@@ -22,6 +22,9 @@ export type BookShadowStrength = (typeof BOOK_SHADOW_STRENGTHS)[number];
export const BOOK_COVER_DISPLAY_MODES = ["blurred-fit", "fill-crop", "natural-bottom"] as const;
export type BookCoverDisplayMode = (typeof BOOK_COVER_DISPLAY_MODES)[number];
export const SERIES_CARD_COVER_MODES = ["mosaic", "first-volume", "latest-volume", "first-unread"] as const;
export type SeriesCardCoverMode = (typeof SERIES_CARD_COVER_MODES)[number];
export interface DisplayPreferences {
portraitCoverSize: number;
squareCoverSize: number;
@@ -39,4 +42,5 @@ export interface DisplayPreferences {
bookSpineOverlay: BookSpineOverlay;
bookShadowStrength: BookShadowStrength;
bookCoverDisplayMode: BookCoverDisplayMode;
seriesCardCoverMode: SeriesCardCoverMode;
}
+3
View File
@@ -9,6 +9,9 @@ export type CollapsedSeriesInfo = {
readCount: number;
coverBookIds: number[];
seriesLatestAddedAt: string | null;
firstVolumeBookId?: number | null;
latestVolumeBookId?: number | null;
firstUnreadBookId?: number | null;
};
export function resolveCollapsePreference(prefs: SeriesCollapsePreferences | undefined, ctx: { libraryId?: number; collectionId?: number }): boolean {