From 8e48aa4334573d4fb886995adcc1a44ab1b9a81d Mon Sep 17 00:00:00 2001 From: John O'Keefe Date: Sun, 17 May 2026 21:12:26 -0400 Subject: [PATCH] feat(templates): add library switcher to collections and dashboard pages Replace inline library switcher HTML with shared LibrarySwitcher component across all collection pages and the dashboard. templates/collections.templ (Collection): - Update signature to accept libData []LibraryData, currentLibraryID - Add @LibrarySwitcher(libData, currentLibraryID) after header - Change x-init to initCollectionsPage() for unified initialization templates/collections.templ (CollectionDetail): - Update signature to accept libData []LibraryData - Add @LibrarySwitcher(libData, libraryID) after header - Fix broken "Back to Collections" button: replace non-existent backToCollections Alpine method with a plain link - Change x-init to initCollectionsPage() for unified initialization templates/dashboard.templ: - Replace 46-line inline sticky library selector (lines 20-66) with @LibrarySwitcher(libData, currentLibraryID, DashboardActions()) - Dashboard-specific settings and refresh buttons extracted into the DashboardActions sub-component via the variadic actions parameter --- templates/collections.templ | 33 +-- templates/collections_templ.go | 54 ++-- templates/dashboard.templ | 48 +--- templates/dashboard_templ.go | 491 ++++++++++++++------------------- 4 files changed, 253 insertions(+), 373 deletions(-) diff --git a/templates/collections.templ b/templates/collections.templ index 80638c2..620bb7d 100644 --- a/templates/collections.templ +++ b/templates/collections.templ @@ -2,7 +2,7 @@ package templates import "bookhoard/internal/handlers" -templ Collection(user User, collections []CollectionData, errorMessage string) { +templ Collection(user User, collections []CollectionData, libData []LibraryData, currentLibraryID string, errorMessage string) { @@ -12,8 +12,9 @@ templ Collection(user User, collections []CollectionData, errorMessage string) { - + @Header(user, "/collections") + @LibrarySwitcher(libData, currentLibraryID) @@ -100,7 +101,7 @@ templ Collection(user User, collections []CollectionData, errorMessage string) { } -templ CollectionDetail(user User, collection CollectionData, books []handlers.BookInfo, libraryID string) { +templ CollectionDetail(user User, collection CollectionData, books []handlers.BookInfo, libraryID string, libData []LibraryData) { @@ -110,13 +111,14 @@ templ CollectionDetail(user User, collection CollectionData, books []handlers.Bo - + @Header(user, "/collections") + @LibrarySwitcher(libData, libraryID)
- +
{ collection.Icon }
@@ -169,7 +171,6 @@ templ CollectionDetail(user User, collection CollectionData, books []handlers.Bo style="background-color: var(--bg-secondary); border-color: var(--border);" >
-
}
-
if book.CoverImagePath != "" {
-
-