feat(series): add dedicated series detail page instead of bookshelf filter

Create a new /series/detail?name=X&library_id=Y SSR page that shows
all books in a specific series, replacing the broken approach of
linking to /bookshelf?series_filter=X (the bookshelf SSR handler
ignores all filter query params).

The series detail page features:
- Back link to /series browse page
- Library selector dropdown (full page navigation on change)
- Series name header with book count badge
- Book grid using the shared BookCard template
- Empty state for series with no books

Update all links to point to the new page:
- Series cards on /series browse page
- Series badge on book detail page
- JS-rendered cards in series.ts switchLibrary

Add seriesDetailPage Alpine component for the detail page's
library switcher (simple navigation, no AJAX needed).
This commit is contained in:
2026-05-08 20:50:59 -04:00
parent a57694b738
commit ddc14e3314
8 changed files with 375 additions and 7 deletions
+1 -1
View File
@@ -122,7 +122,7 @@ templ BookDetail(user User, book handlers.MediaDetail, errorMessage string) {
if book.Series.Valid && book.Series.String != "" {
<div class="mb-4">
<a
href={ "/bookshelf?series_filter=" + url.QueryEscape(book.Series.String) + "&sort=series" }
href={ "/series/detail?name=" + url.QueryEscape(book.Series.String) }
class="px-3 py-1 rounded-full text-sm font-semibold inline-block hover:opacity-80 transition-opacity"
style="background-color: var(--accent); color: white; text-decoration: none;"
>