Add Finished Books feature with episode playlists and nav dropdown
Public: - /finished page with ornament heading, intro text, book grid, and styled empty state - /finished/:id episode playlist page filtered by RSS season number - Episodes nav becomes click-toggle dropdown (Current Series / Finished Books) - Finished Books link in footer - Dropdown font fixed to match other nav links Admin: - End Current Series & Start New Book wizard on Current Series tab - Finished Books management tab with add/edit/remove and image asset picker Data: - FinishedBook type + finishedBooks[] field on SiteContent - RSS parser extracts itunes:season per episode Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -3831,6 +3831,7 @@ export default function AdminPage({ content, onSave, onLogout }: Props) {
|
||||
<div className="admin-field">
|
||||
<label>Cover Image URL</label>
|
||||
<input type="text" value={book.imageUrl} onChange={e => setForm(f => ({ ...f, finishedBooks: (f.finishedBooks ?? []).map(b => b.id === book.id ? { ...b, imageUrl: e.target.value } : b) }))} />
|
||||
{renderImageAssetSelector(book.imageUrl, value => setForm(f => ({ ...f, finishedBooks: (f.finishedBooks ?? []).map(b => b.id === book.id ? { ...b, imageUrl: value } : b) })), `finished-book-img-${book.id}`)}
|
||||
{renderImagePreview(book.imageUrl, `${book.title} cover`)}
|
||||
</div>
|
||||
<div className="admin-field">
|
||||
|
||||
Reference in New Issue
Block a user