/** * TableOfContents — slide-in drawer listing all chapters. * Tap a chapter to navigate. Current chapter is highlighted. */ import type { ChapterSummary } from "../types/reader"; interface TableOfContentsProps { chapters: ChapterSummary[]; currentChapterNumber: number; isOpen: boolean; onClose: () => void; onNavigate: (number: number) => void; } export default function TableOfContents({ chapters, currentChapterNumber, isOpen, onClose, onNavigate, }: TableOfContentsProps) { const handleChapterClick = (number: number) => { onNavigate(number); onClose(); }; return ( <> {/* Overlay */} {isOpen && (
{ if (e.key === "Escape") onClose(); }} role="presentation" /> )} {/* Drawer */} ); }