From 9fd61d327a5636b252b1263199aab0764eb90c4d Mon Sep 17 00:00:00 2001 From: neon <18559658+neonsolstice@users.noreply.github.com> Date: Mon, 1 Jun 2026 20:08:18 +0000 Subject: [PATCH] feat(client): support square audiobook covers and inline series cells Refactors the virtual book table to render collapsed series as standard inline cells (BookTableCollapsedSeriesCell) rather than full-width rows, improving table alignment and layout consistency. Updates the dashboard scroller and cover artwork components to support 1:1 aspect ratios, ensuring audiobook covers are displayed correctly without distortion. --- client/src/assets/theme/cover-effects.css | 2 +- .../book/components/BookCoverArtwork.vue | 12 +- .../book/components/CollapsedSeriesCard.vue | 49 ++++- .../book/components/VirtualBookTable.vue | 164 ++++++++-------- .../__tests__/BookCoverArtwork.spec.ts | 2 +- .../__tests__/BookCoverCard.spec.ts | 5 - .../__tests__/CollapsedSeriesCard.spec.ts | 4 +- .../components/detail/BookCarousel.test.ts | 10 +- .../table/BookTableCollapsedSeriesCell.vue | 80 ++++++++ .../table/BookTableCollapsedSeriesRow.vue | 71 ------- .../BookTableCollapsedSeriesRow.spec.ts | 178 ------------------ .../components/DashboardScroller.vue | 23 ++- .../series/views/SeriesDetailView.vue | 6 +- 13 files changed, 239 insertions(+), 367 deletions(-) create mode 100644 client/src/features/book/components/table/BookTableCollapsedSeriesCell.vue delete mode 100644 client/src/features/book/components/table/BookTableCollapsedSeriesRow.vue delete mode 100644 client/src/features/book/components/table/__tests__/BookTableCollapsedSeriesRow.spec.ts diff --git a/client/src/assets/theme/cover-effects.css b/client/src/assets/theme/cover-effects.css index 9083f5375..b92f98e9e 100644 --- a/client/src/assets/theme/cover-effects.css +++ b/client/src/assets/theme/cover-effects.css @@ -6,7 +6,7 @@ --book-cover-spine-width: 6%; position: relative; isolation: isolate; - background-color: white; + background-color: color-mix(in oklch, var(--foreground) 12%, var(--background)); background-size: cover; box-shadow: var(--book-cover-shadow); } diff --git a/client/src/features/book/components/BookCoverArtwork.vue b/client/src/features/book/components/BookCoverArtwork.vue index 7464039cf..2603ddc13 100644 --- a/client/src/features/book/components/BookCoverArtwork.vue +++ b/client/src/features/book/components/BookCoverArtwork.vue @@ -115,6 +115,16 @@ function handleImageError() {