feat(books): add book detail page with tabs and keep-alive grid scroll

This commit is contained in:
neon
2026-01-26 15:33:18 -06:00
parent ee05c50b72
commit a00c5a54dd
19 changed files with 513 additions and 67 deletions
@@ -3,7 +3,7 @@ import type { BookCard, BookFileRef } from '@projectx/types'
import { bookCoverStyle } from '../lib/book-cover'
import { computed, ref } from 'vue'
import { useRouter } from 'vue-router'
import { BookOpen, FolderPlus, MoreHorizontal, PanelRight, Pencil, Trash2 } from 'lucide-vue-next'
import { BookOpen, ExternalLink, FolderPlus, MoreHorizontal, PanelRight, Pencil, Trash2 } from 'lucide-vue-next'
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'
const router = useRouter()
@@ -103,6 +103,10 @@ function openFile(file: BookFileRef) {
<BookOpen class="size-4 mr-2" />
Open
</DropdownMenuItem>
<DropdownMenuItem @click="router.push({ name: 'book-detail', params: { bookId: book.id } })">
<ExternalLink class="size-4 mr-2" />
Book Details
</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem @click="emit('action', 'edit-metadata')">
<Pencil class="size-4 mr-2" />