+
+
+ ← Canto {cantoInfo.number}: {cantoInfo.title}
+
+
+ Chapter {chapter}: {chapterInfo.title}
+
+
+
+
+ ({
+ verse: v.verse,
+ verseEnd: v.verseEnd ?? undefined,
+ reference: v.reference,
+ }))}
+ book="sb"
+ division={canto}
+ chapter={parseInt(chapter)}
+ showBengali={false}
+ basePath={`/books/sb/${canto}/${chapter}`}
+ />
+
+
+ );
+}
diff --git a/app/books/sb/[canto]/[chapter]/page.tsx b/app/books/sb/[canto]/[chapter]/page.tsx
index 2f259fe0..5003a70a 100644
--- a/app/books/sb/[canto]/[chapter]/page.tsx
+++ b/app/books/sb/[canto]/[chapter]/page.tsx
@@ -1,87 +1,16 @@
-import Link from "next/link";
-import { PageHeader } from "@/components/page-header";
+import { redirect } from "next/navigation";
import { notFound } from "next/navigation";
-import { getBookMeta, getSingleVerse, getChapterVerseIndex } from "@/lib/api";
-import { ChapterViewer } from "@/app/books/chapter-viewer";
-
-type ChapterInfo = {
- number: number;
- title: string;
- totalVerses: number;
-};
-
-type CantoInfo = {
- number: number;
- title: string;
- totalChapters: number;
- chapters: ChapterInfo[];
-};
+import { getChapterVerseIndex } from "@/lib/api";
export default async function SbChapterPage({
params,
- searchParams,
}: {
params: Promise<{ canto: string; chapter: string }>;
- searchParams: Promise<{ verse?: string }>;
}) {
const { canto, chapter } = await params;
- const { verse: verseParam } = await searchParams;
-
- const meta = await getBookMeta("sb");
- if (!meta) notFound();
-
- const cantos = (meta as unknown as { cantos: CantoInfo[] }).cantos;
- const cantoInfo = cantos.find((c) => c.number === parseInt(canto));
- if (!cantoInfo) notFound();
-
- const chapterInfo = cantoInfo.chapters.find(
- (ch) => ch.number === parseInt(chapter),
- );
- if (!chapterInfo) notFound();
-
const verseIndex = await getChapterVerseIndex("sb", canto, parseInt(chapter));
- if (verseIndex.length === 0) notFound();
-
- const requestedVerse = verseParam
- ? parseInt(verseParam)
- : verseIndex[0].verse;
- const verse = await getSingleVerse(
- "sb",
- canto,
- parseInt(chapter),
- requestedVerse,
- );
- if (!verse) notFound();
-
- return (
-
-
-
- ← Canto {cantoInfo.number}: {cantoInfo.title}
-
-
- Chapter {chapter}: {chapterInfo.title}
-
-
-
-
- ({
- verse: v.verse,
- verseEnd: v.verseEnd ?? undefined,
- reference: v.reference,
- }))}
- book="sb"
- division={canto}
- chapter={parseInt(chapter)}
- showBengali={false}
- />
-
-
- );
+ if (verseIndex.length === 0) {
+ notFound();
+ }
+ redirect(`/books/sb/${canto}/${chapter}/${verseIndex[0].verse}`);
}
diff --git a/app/books/sb1962/[chapter]/[verse]/page.tsx b/app/books/sb1962/[chapter]/[verse]/page.tsx
new file mode 100644
index 00000000..c5494333
--- /dev/null
+++ b/app/books/sb1962/[chapter]/[verse]/page.tsx
@@ -0,0 +1,81 @@
+import Link from "next/link";
+import { PageHeader } from "@/components/page-header";
+import { notFound } from "next/navigation";
+import { getBookMeta, getSingleVerse, getChapterVerseIndex } from "@/lib/api";
+import { ChapterViewer } from "@/app/books/chapter-viewer";
+
+type Sb1962Meta = {
+ book: string;
+ title: string;
+ author: string;
+ totalChapters: number;
+ chapters: { number: number; title: string; totalVerses: number }[];
+};
+
+export default async function VersePage({
+ params,
+}: {
+ params: Promise<{ chapter: string; verse: string }>;
+}) {
+ const { chapter, verse: verseParam } = await params;
+
+ const meta = await getBookMeta("sb1962");
+ if (!meta) notFound();
+
+ const sb1962Meta = meta as unknown as Sb1962Meta;
+ const chapterInfo = sb1962Meta.chapters?.find(
+ (c) => c.number === parseInt(chapter),
+ );
+ if (!chapterInfo?.title) notFound();
+
+ const title: string = chapterInfo.title;
+
+ const verseIndex = await getChapterVerseIndex(
+ "sb1962",
+ null,
+ parseInt(chapter),
+ );
+ if (verseIndex.length === 0) notFound();
+
+ const requestedVerse = parseInt(verseParam);
+ const verse = await getSingleVerse(
+ "sb1962",
+ null,
+ parseInt(chapter),
+ requestedVerse,
+ );
+ if (!verse) notFound();
+
+ return (
+
+
+
+ ← Śrīmad-Bhāgavatam (1962)
+
+
+ Chapter {chapter}: {title}
+
+
+
+
+ ({
+ verse: v.verse,
+ verseEnd: v.verseEnd ?? undefined,
+ reference: v.reference,
+ }))}
+ book="sb1962"
+ division={null}
+ chapter={parseInt(chapter)}
+ basePath={`/books/sb1962/${chapter}`}
+ showBengali={false}
+ />
+
+
+ );
+}
diff --git a/app/books/sb1962/[chapter]/page.tsx b/app/books/sb1962/[chapter]/page.tsx
new file mode 100644
index 00000000..2484e869
--- /dev/null
+++ b/app/books/sb1962/[chapter]/page.tsx
@@ -0,0 +1,20 @@
+import { redirect } from "next/navigation";
+import { notFound } from "next/navigation";
+import { getChapterVerseIndex } from "@/lib/api";
+
+export default async function ChapterPage({
+ params,
+}: {
+ params: Promise<{ chapter: string }>;
+}) {
+ const { chapter } = await params;
+ const verseIndex = await getChapterVerseIndex(
+ "sb1962",
+ null,
+ parseInt(chapter),
+ );
+ if (verseIndex.length === 0) {
+ notFound();
+ }
+ redirect(`/books/sb1962/${chapter}/${verseIndex[0].verse}`);
+}
diff --git a/app/books/sb1962/page.tsx b/app/books/sb1962/page.tsx
new file mode 100644
index 00000000..763426cb
--- /dev/null
+++ b/app/books/sb1962/page.tsx
@@ -0,0 +1,69 @@
+import Link from "next/link";
+import { notFound } from "next/navigation";
+import { getBookMeta } from "@/lib/api";
+import { PageHeader } from "@/components/page-header";
+import { Card, CardContent } from "@/components/ui/card";
+import { ExtractedVerseCount } from "../extracted-verse-count";
+
+type ChapterInfo = {
+ number: number;
+ title: string;
+ totalVerses: number;
+};
+
+export default async function Sb1962Page() {
+ const meta = await getBookMeta("sb1962");
+ if (!meta) notFound();
+
+ const intro = meta as unknown as {
+ book: string;
+ title: string;
+ author: string;
+ description?: string;
+ totalChapters: number;
+ chapters: ChapterInfo[];
+ };
+
+ return (
+