bvandeusen
ed082226a0
feat(web): add PlayerBar component
...
Bottom-bar UI with left: cover+title+linked artist, center: stacked
seek row (elapsed / slider / duration) + transport (prev/play/next),
right: shuffle/repeat/volume. Loading shows spinner; error replaces
transport with retry card.
2026-04-24 21:41:24 -04:00
bvandeusen
4bff8cc99a
feat(web): make TrackRow click-to-play; pass tracks+index from album page
...
TrackRow becomes a <button> that dispatches playQueue(tracks, index).
Album page supplies the full track list + each index so the rest of
the album enqueues automatically when the user clicks a track.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-04-24 21:39:34 -04:00
bvandeusen
f94bf26f02
feat(web): add ApiErrorBanner retry-capable error card
2026-04-23 18:42:22 -04:00
bvandeusen
9ed8e261d4
feat(web): add LibrarySkeleton with list/grid/album variants
...
Shimmer placeholders that mirror the layout of each library page so
the real content slides in without shifting.
2026-04-23 18:41:32 -04:00
bvandeusen
12d1cb739b
feat(web): add TrackRow component
...
Non-interactive album track row with number, title, duration.
Player plan will add click-to-play.
2026-04-23 18:40:40 -04:00
bvandeusen
e9b482da0c
feat(web): add AlbumCard component
...
Grid card used on the artist detail page. Cover image, title, year.
Broken covers swap to FALLBACK_COVER via onerror.
2026-04-23 18:39:42 -04:00
bvandeusen
a1252c1ef4
feat(web): add ArtistRow component
...
One row in the artists list: avatar initial, name, album count,
chevron. Entire row is an <a> for click + keyboard activation.
2026-04-23 18:18:52 -04:00
bvandeusen
e1504f8e6c
feat(web): add Shell component with header, sidebar, and user menu
...
Persistent chrome used by every authenticated route. Sidebar hides
below md:; mobile nav is a separate concern for a later plan.
2026-04-22 22:20:18 -04:00