From b81b18632d0bf4abcc60a0f962a277fdf546a6e7 Mon Sep 17 00:00:00 2001 From: gosangam Date: Wed, 6 May 2026 01:19:06 +0530 Subject: [PATCH] fix: og image generation --- app/about/page.tsx | 10 + app/api/og/route.tsx | 337 +++++++++++++------------- app/disciples/page.tsx | 6 + app/essays/page.tsx | 11 + app/glossary/page.tsx | 11 + app/journals/page.tsx | 47 +++- app/letters/location/[name]/page.tsx | 14 ++ app/letters/page.tsx | 11 + app/letters/recipient/[name]/page.tsx | 14 ++ app/letters/year/[year]/page.tsx | 14 ++ app/magazines/page.tsx | 11 + app/other-documents/page.tsx | 11 + lib/og.ts | 146 ++++++++++- 13 files changed, 464 insertions(+), 179 deletions(-) diff --git a/app/about/page.tsx b/app/about/page.tsx index a9bd6b0a..161c992c 100644 --- a/app/about/page.tsx +++ b/app/about/page.tsx @@ -1,5 +1,7 @@ +import type { Metadata } from "next"; import Link from "next/link"; import { PageHeader } from "@/components/page-header"; +import { buildOgMeta } from "@/lib/og"; import { BookOpen, BrainCircuit, @@ -45,6 +47,14 @@ const PHASES = [ }, ]; +export function generateMetadata(): Metadata { + return buildOgMeta({ + title: "About — Prabhupāda Says", + quote: + "Built by a small team of Prabhupādānugas — preserving and presenting the teachings of Śrīla Prabhupāda exactly as he gave them, without alteration.", + }); +} + export default function AboutPage() { return (
diff --git a/app/api/og/route.tsx b/app/api/og/route.tsx index 8063d3f5..d4bf7361 100644 --- a/app/api/og/route.tsx +++ b/app/api/og/route.tsx @@ -4,215 +4,218 @@ import { join } from "node:path"; export const runtime = "nodejs"; +// Cache the font data at module level so it's only loaded once +let geistBoldData: ArrayBuffer | null = null; +let geistRegularData: ArrayBuffer | null = null; + +async function loadFonts() { + if (!geistBoldData) { + // Fetch Geist Bold from Google Fonts CDN + const boldRes = await fetch( + "https://cdn.jsdelivr.net/fontsource/fonts/geist-sans@latest/latin-700-normal.woff", + ); + geistBoldData = await boldRes.arrayBuffer(); + } + if (!geistRegularData) { + const regularRes = await fetch( + "https://cdn.jsdelivr.net/fontsource/fonts/geist-sans@latest/latin-400-normal.woff", + ); + geistRegularData = await regularRes.arrayBuffer(); + } + return { bold: geistBoldData, regular: geistRegularData }; +} + export async function GET(request: Request) { - const { searchParams } = new URL(request.url); + try { + const { searchParams } = new URL(request.url); - const title = searchParams.get("title") || "Prabhupāda Says"; - const detail = searchParams.get("detail") || ""; - const quote = searchParams.get("quote") || ""; + const title = searchParams.get("title") || "Prabhupāda Says"; + const detail = searchParams.get("detail") || ""; + const rawQuote = searchParams.get("quote") || ""; - // Truncate for readability and to prevent overflow - const displayTitle = title.length > 60 ? title.slice(0, 57) + "..." : title; - const displayDetail = - detail.length > 80 ? detail.slice(0, 77) + "..." : detail; - const displayQuote = quote.length > 220 ? quote.slice(0, 217) + "..." : quote; + // Fallback: if no quote provided, generate one from context + const quote = + rawQuote || + (title === "Prabhupāda Says" + ? "Browse the original, unedited books, letters, and teachings of His Divine Grace A.C. Bhaktivedanta Swami Prabhupāda — presented as they are." + : `Read ${title}${detail ? ` — ${detail}` : ""} by His Divine Grace A.C. Bhaktivedanta Swami Prabhupāda`); - // Load the Prabhupāda image as base64 - const imgData = await readFile( - join(process.cwd(), "public/images/og-left-prabhupada-reading.png"), - "base64", - ); - const imgSrc = `data:image/png;base64,${imgData}`; + // Truncate for readability and to prevent overflow + const displayTitle = title.length > 60 ? title.slice(0, 57) + "..." : title; + const displayDetail = + detail.length > 80 ? detail.slice(0, 77) + "..." : detail; + const displayQuote = + quote.length > 220 ? quote.slice(0, 217) + "..." : quote; - return new ImageResponse( -
- {/* Left side — image + branding */} + // Load fonts and image + const fonts = await loadFonts(); + + const imgData = await readFile( + join(process.cwd(), "public/images/og-left-prabhupada-reading.png"), + "base64", + ); + const imgSrc = `data:image/png;base64,${imgData}`; + + return new ImageResponse(
- {/* Decorative quote mark */} + {/* Left side — image + branding */}
- “ + {/* Prabhupāda image — already contains quote mark and branding */} +
- {/* Prabhupāda image */} - - - {/* Branding at the bottom */} + {/* Right side — content */}
- - Prabhupāda - - - says - -
-
- - {/* Right side — content */} -
- {/* Title */} -
- {displayTitle} -
- - {/* Detail (chapter, verse, etc.) */} - {displayDetail && ( + {/* Title */}
- {displayDetail} + {displayTitle}
- )} - {/* Quote text */} - {displayQuote && ( -
+ {/* Detail (chapter, verse, etc.) */} + {displayDetail ? (
- {displayQuote} + {displayDetail}
-
- )} + ) : null} - {/* Read more */} -
- +
+ {displayQuote} +
+
+ ) : null} + + {/* Read more */} +
- Read more at - - - prabhupadasays.org - + + Read more at + + + prabhupadasays.org + +
-
-
, - { - width: 1200, - height: 630, - }, - ); + , + { + width: 1200, + height: 630, + fonts: [ + { + name: "Geist", + data: fonts.regular, + style: "normal" as const, + weight: 400, + }, + { + name: "Geist", + data: fonts.bold, + style: "normal" as const, + weight: 700, + }, + ], + }, + ); + } catch (e) { + console.error("OG image generation failed:", e); + return new Response("Failed to generate OG image", { status: 500 }); + } } diff --git a/app/disciples/page.tsx b/app/disciples/page.tsx index 0c25f81c..ce9d6e45 100644 --- a/app/disciples/page.tsx +++ b/app/disciples/page.tsx @@ -1,7 +1,9 @@ export const dynamic = "force-dynamic"; +import type { Metadata } from "next"; import Link from "next/link"; import { PageHeader } from "@/components/page-header"; +import { ogForDisciples } from "@/lib/og"; import { getTotalDiscipleCount, getFilteredDisciples, @@ -14,6 +16,10 @@ import { import type { SuffixFilter } from "@/lib/disciples"; import { DisciplesBrowser } from "./disciples-browser"; +export async function generateMetadata(): Promise { + return ogForDisciples(); +} + const VALID_SUFFIXES: SuffixFilter[] = ["all", "Dasa", "Devi Dasi"]; function parseSuffix(raw: string | undefined): SuffixFilter { diff --git a/app/essays/page.tsx b/app/essays/page.tsx index 1fd99f5b..68cbd03a 100644 --- a/app/essays/page.tsx +++ b/app/essays/page.tsx @@ -1,10 +1,21 @@ export const dynamic = "force-dynamic"; +import type { Metadata } from "next"; import Link from "next/link"; import { PageHeader } from "@/components/page-header"; +import { buildOgMeta } from "@/lib/og"; import { prisma } from "@/lib/db"; import { EssaysGrid } from "./essays-grid"; +export function generateMetadata(): Metadata { + return buildOgMeta({ + title: "Essays", + detail: "Standalone essays by Śrīla Prabhupāda", + quote: + "Foundational essays on the science of Kṛṣṇa consciousness by His Divine Grace A.C. Bhaktivedanta Swami Prabhupāda.", + }); +} + async function getAllEssays() { return prisma.essay.findMany({ orderBy: [{ group: "asc" }, { order: "asc" }], diff --git a/app/glossary/page.tsx b/app/glossary/page.tsx index 4651943a..a1592390 100644 --- a/app/glossary/page.tsx +++ b/app/glossary/page.tsx @@ -1,7 +1,18 @@ +import type { Metadata } from "next"; import Link from "next/link"; import { PageHeader } from "@/components/page-header"; import { GlossaryClient } from "./glossary-client"; import { getAllGlossaryEntries } from "@/lib/api"; +import { buildOgMeta } from "@/lib/og"; + +export function generateMetadata(): Metadata { + return buildOgMeta({ + title: "Glossary", + detail: "2,700+ Sanskrit & Vedic terms", + quote: + "A comprehensive glossary of Sanskrit and Vedic terms from the books of Śrīla Prabhupāda.", + }); +} export default async function GlossaryPage() { const entries = await getAllGlossaryEntries(); diff --git a/app/journals/page.tsx b/app/journals/page.tsx index 751e1a26..00b49b55 100644 --- a/app/journals/page.tsx +++ b/app/journals/page.tsx @@ -1,18 +1,38 @@ export const dynamic = "force-dynamic"; +import type { Metadata } from "next"; import Link from "next/link"; import { PageHeader } from "@/components/page-header"; -import { Card, CardHeader, CardTitle, CardDescription, CardContent } from "@/components/ui/card"; +import { buildOgMeta } from "@/lib/og"; +import { + Card, + CardHeader, + CardTitle, + CardDescription, + CardContent, +} from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { getAllJournals, bookCodeToSlug } from "@/lib/journals"; +export function generateMetadata(): Metadata { + return buildOgMeta({ + title: "Journals", + detail: "Personal diaries and journals of Śrīla Prabhupāda", + quote: + "From the personal journals of Śrīla Prabhupāda — a window into the daily life and mission of the Founder-Ācārya of ISKCON.", + }); +} + export default async function JournalsPage() { const journals = await getAllJournals(); return (
- + ← Home

Journals

@@ -24,20 +44,33 @@ export default async function JournalsPage() {
{journals.map((journal) => ( - + - {journal.title} + + {journal.title} + {journal.description && ( - {journal.description} + + {journal.description} + )}
- {journal.year && {journal.year}} + {journal.year && ( + + {journal.year} + + )} {journal.totalChapters > 0 && ( - {journal.totalChapters} {journal.totalChapters === 1 ? "chapter" : "chapters"} + {journal.totalChapters}{" "} + {journal.totalChapters === 1 ? "chapter" : "chapters"} )}
diff --git a/app/letters/location/[name]/page.tsx b/app/letters/location/[name]/page.tsx index 3c049344..bb342f56 100644 --- a/app/letters/location/[name]/page.tsx +++ b/app/letters/location/[name]/page.tsx @@ -1,9 +1,23 @@ export const dynamic = "force-dynamic"; +import type { Metadata } from "next"; import { notFound } from "next/navigation"; import { getLettersByLocation } from "@/lib/letters"; +import { ogForLettersByLocation } from "@/lib/og"; import { FilterYearBrowser } from "../../filter-year-browser"; +export async function generateMetadata({ + params, +}: { + params: Promise<{ name: string }>; +}): Promise { + const { name: encodedName } = await params; + const name = decodeURIComponent(encodedName); + const letters = await getLettersByLocation(name); + if (letters.length === 0) return {}; + return ogForLettersByLocation(name, letters.length); +} + export default async function LettersByLocationPage({ params, }: { diff --git a/app/letters/page.tsx b/app/letters/page.tsx index 1de0d238..811279b1 100644 --- a/app/letters/page.tsx +++ b/app/letters/page.tsx @@ -1,7 +1,9 @@ export const dynamic = "force-dynamic"; +import type { Metadata } from "next"; import Link from "next/link"; import { PageHeader } from "@/components/page-header"; +import { buildOgMeta } from "@/lib/og"; import { getLetterYears, getLetterRecipients, @@ -11,6 +13,15 @@ import { import { LettersNav } from "./letters-nav"; import { LettersBrowser } from "./letters-browser"; +export function generateMetadata(): Metadata { + return buildOgMeta({ + title: "Letters", + detail: "6,800+ letters (1947–1977)", + quote: + "Personal correspondence by Śrīla Prabhupāda — guiding disciples, Godbrothers, and well-wishers in the science of Kṛṣṇa consciousness.", + }); +} + export default async function LettersPage({ searchParams, }: { diff --git a/app/letters/recipient/[name]/page.tsx b/app/letters/recipient/[name]/page.tsx index 5d9ffb5d..4933031e 100644 --- a/app/letters/recipient/[name]/page.tsx +++ b/app/letters/recipient/[name]/page.tsx @@ -1,9 +1,23 @@ export const dynamic = "force-dynamic"; +import type { Metadata } from "next"; import { notFound } from "next/navigation"; import { getLettersByRecipient } from "@/lib/letters"; +import { ogForLettersByRecipient } from "@/lib/og"; import { FilterYearBrowser } from "../../filter-year-browser"; +export async function generateMetadata({ + params, +}: { + params: Promise<{ name: string }>; +}): Promise { + const { name: encodedName } = await params; + const name = decodeURIComponent(encodedName); + const letters = await getLettersByRecipient(name); + if (letters.length === 0) return {}; + return ogForLettersByRecipient(name, letters.length); +} + export default async function LettersByRecipientPage({ params, }: { diff --git a/app/letters/year/[year]/page.tsx b/app/letters/year/[year]/page.tsx index b4b5b4c1..8c33271b 100644 --- a/app/letters/year/[year]/page.tsx +++ b/app/letters/year/[year]/page.tsx @@ -1,9 +1,23 @@ export const dynamic = "force-dynamic"; +import type { Metadata } from "next"; import { notFound } from "next/navigation"; import { getLettersByYear } from "@/lib/letters"; +import { ogForLettersByYear } from "@/lib/og"; import { YearMonthBrowser } from "./year-month-browser"; +export async function generateMetadata({ + params, +}: { + params: Promise<{ year: string }>; +}): Promise { + const { year: yearStr } = await params; + const year = parseInt(yearStr, 10); + if (isNaN(year)) return {}; + const letters = await getLettersByYear(year); + return ogForLettersByYear(year, letters.length); +} + export default async function LettersByYearPage({ params, }: { diff --git a/app/magazines/page.tsx b/app/magazines/page.tsx index 8b02f726..f7a2d257 100644 --- a/app/magazines/page.tsx +++ b/app/magazines/page.tsx @@ -1,5 +1,6 @@ export const dynamic = "force-dynamic"; +import type { Metadata } from "next"; import Link from "next/link"; import { PageHeader } from "@/components/page-header"; import { @@ -11,6 +12,16 @@ import { } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { getAllMagazines, bookCodeToSlug } from "@/lib/magazines"; +import { buildOgMeta } from "@/lib/og"; + +export function generateMetadata(): Metadata { + return buildOgMeta({ + title: "Magazines", + detail: "Back to Godhead & other periodicals", + quote: + "Back to Godhead — the magazine founded by Śrīla Prabhupāda in 1944 to present the timeless science of Kṛṣṇa consciousness.", + }); +} export default async function MagazinesPage() { const magazines = await getAllMagazines(); diff --git a/app/other-documents/page.tsx b/app/other-documents/page.tsx index 022b3b87..331ab69c 100644 --- a/app/other-documents/page.tsx +++ b/app/other-documents/page.tsx @@ -1,9 +1,20 @@ export const dynamic = "force-dynamic"; +import type { Metadata } from "next"; import Link from "next/link"; import { PageHeader } from "@/components/page-header"; import { getAllOtherDocuments, bookCodeToSlug } from "@/lib/other-documents"; import { OtherDocumentsGrid } from "./other-documents-grid"; +import { buildOgMeta } from "@/lib/og"; + +export function generateMetadata(): Metadata { + return buildOgMeta({ + title: "Other Documents", + detail: "Miscellaneous analyses & writings", + quote: + "Writings and analyses by His Divine Grace A.C. Bhaktivedanta Swami Prabhupāda.", + }); +} export default async function OtherDocumentsPage() { const documents = await getAllOtherDocuments(); diff --git a/lib/og.ts b/lib/og.ts index bd548278..eaf61086 100644 --- a/lib/og.ts +++ b/lib/og.ts @@ -20,6 +20,91 @@ export type OgParams = { quote?: string; }; +// --------------------------------------------------------------------------- +// Fallback descriptions — used when no quote/description is provided +// --------------------------------------------------------------------------- + +const SITE_DESCRIPTION = + "Browse the original, unedited books, letters, and teachings of His Divine Grace A.C. Bhaktivedanta Swami Prabhupāda — presented as they are."; + +const BOOK_DESCRIPTIONS: Record = { + bg: "The definitive guide to the science of self-realization, spoken by Lord Śrī Kṛṣṇa to His devotee Arjuna on the Battlefield of Kurukṣetra.", + sb: "The ripened fruit of the tree of Vedic literature — 18,000 verses describing the pastimes of the Supreme Lord and His devotees.", + cc: "The life and teachings of Śrī Caitanya Mahāprabhu, the most munificent incarnation of Godhead who distributed love of God freely to all.", + sb1962: + "The original 1962 edition of Śrīmad-Bhāgavatam — Śrīla Prabhupāda's first major literary contribution in English.", + iso: "Eighteen mantras revealing the essential teachings of the Vedas — the relationship between God, the living entity, and the material world.", + noi: "Eleven verses by Śrīla Rūpa Gosvāmī providing essential instructions for serious practitioners of devotional service.", + nod: "A comprehensive guide to the science of bhakti-yoga, summarizing Śrīla Rūpa Gosvāmī's Bhakti-rasāmṛta-sindhu.", + bs: "The prayers of Lord Brahmā glorifying the Supreme Lord Govinda — with translation and commentary by Śrīla Prabhupāda.", + mm: "Devotional prayers of King Kulaśekhara expressing the purest sentiments of surrender to Lord Kṛṣṇa.", + nbs: "The eternal principles of devotional service as taught by the great sage Nārada Muni.", + kb: "The enchanting pastimes of Lord Śrī Kṛṣṇa in Vṛndāvana and Dvārakā — the Supreme Personality of Godhead in His original form.", + tlc: "The sublime teachings of Lord Śrī Caitanya Mahāprabhu to Śrīla Sanātana Gosvāmī, Śrīla Rūpa Gosvāmī, and others.", + ej: "A scientific presentation of the anti-material world and how the soul can travel there.", + ek: "How to elevate consciousness from the material to the spiritual platform through the practice of Kṛṣṇa consciousness.", + mg: "An introduction to the unmatched gift of Kṛṣṇa consciousness — the path to eternal happiness and self-realization.", + bbd: "A concise exploration of the soul's journey through repeated birth and death, and the path to liberation.", + owk: "Practical guidance on the journey toward Kṛṣṇa — developing love of God through devotional service.", + rv: "The king of knowledge — understanding the supreme science of devotional service as taught in the Bhagavad-gītā.", + poy: "The perfection of the yoga system — how bhakti-yoga surpasses all other forms of yoga and meditation.", + pqpa: "Conversations between Śrīla Prabhupāda and Bob Cohen — answering life's most fundamental questions.", + ttp: "The teachings of Lord Kapila to His mother Devahūti on the science of God realization and devotional service.", + ochkm: + "The transcendental vibration of the Hare Kṛṣṇa mahā-mantra — its meaning, potency, and practice.", + hkh: "A practical handbook for understanding and practicing Kṛṣṇa consciousness in daily life.", + lcl: "Morning walks with Śrīla Prabhupāda — challenging the fundamental assumptions of modern science.", + lob: "Meditations on the beauty of nature as a reflection of the Supreme Lord's transcendental opulence.", + tlk: "Lord Kapila's instructions on Sāṅkhya philosophy and the path of devotional service.", + tqk: "The prayers and teachings of Queen Kuntī — exemplifying pure devotion in the face of adversity.", + gg: "Bengali poetic renderings of the Bhagavad-gītā by Śrīla Prabhupāda.", + mog: "Śrīla Prabhupāda's message of Godhead — presenting the Absolute Truth for the modern world.", + cbhc: "Commentary on the Śrī Caitanya-bhāgavata — the pastimes of Lord Caitanya by Vṛndāvana dāsa Ṭhākura.", + bk: "Bhagavāner Kathā — Bengali narration of the pastimes of the Supreme Lord.", + pk: "Prabhupāda-Kṛpā — the mercy of Śrīla Prabhupāda preserved in his writings.", + ssr: "Conversations and essays illuminating the timeless science of self-realization for the modern reader.", + ds: "Śrīla Prabhupāda's critique of Western philosophy from Socrates to Sartre — in light of Vedic wisdom.", + sva: "Sacred songs of the great Vaiṣṇava ācāryas — prayers and bhajanas with translations and purports.", + va: "Śrīla Prabhupāda's commentary on the Vedānta-sūtra — the conclusion of all Vedic knowledge.", +}; + +const CONTENT_TYPE_DESCRIPTIONS: Record = { + letters: + "Personal correspondence by Śrīla Prabhupāda — guiding disciples, Godbrothers, and well-wishers in the science of Kṛṣṇa consciousness.", + essays: + "Foundational essays on the science of Kṛṣṇa consciousness by His Divine Grace A.C. Bhaktivedanta Swami Prabhupāda.", + glossary: + "A comprehensive glossary of Sanskrit and Vedic terms from the books of Śrīla Prabhupāda.", + disciples: + "A directory of disciples initiated by Śrīla Prabhupāda between 1966 and 1977.", + journals: + "From the personal journals of Śrīla Prabhupāda — a window into the daily life and mission of the Founder-Ācārya of ISKCON.", + magazines: + "Back to Godhead — the magazine founded by Śrīla Prabhupāda in 1944 to present the timeless science of Kṛṣṇa consciousness.", + "other-documents": + "Writings and analyses by His Divine Grace A.C. Bhaktivedanta Swami Prabhupāda.", +}; + +function getFallbackQuote(title: string, code?: string): string { + // Book-specific description + if (code && BOOK_DESCRIPTIONS[code]) { + return BOOK_DESCRIPTIONS[code]; + } + + // Content-type descriptions + if (title.startsWith("Letter to")) { + return CONTENT_TYPE_DESCRIPTIONS.letters; + } + for (const [key, desc] of Object.entries(CONTENT_TYPE_DESCRIPTIONS)) { + if (title.toLowerCase().includes(key)) { + return desc; + } + } + + // Generic fallback + return SITE_DESCRIPTION; +} + // --------------------------------------------------------------------------- // Build the /api/og image URL // --------------------------------------------------------------------------- @@ -92,7 +177,10 @@ export function buildOgMeta(params: OgParams & { description?: string }) { /** OG metadata for a book page. */ export function ogForBook(code: string) { const title = BOOK_NAMES[code] || code.toUpperCase(); - return buildOgMeta({ title }); + return buildOgMeta({ + title, + quote: getFallbackQuote(title, code), + }); } /** OG metadata for a verse page. */ @@ -112,13 +200,21 @@ export function ogForVerse( detail = `Chapter ${parts.chapter}, Verse ${parts.verse}`; } - return buildOgMeta({ title, detail }); + return buildOgMeta({ + title, + detail, + quote: getFallbackQuote(title, code), + }); } /** OG metadata for a prose chapter. */ export function ogForChapter(code: string, chapterTitle: string) { const bookTitle = BOOK_NAMES[code] || code.toUpperCase(); - return buildOgMeta({ title: bookTitle, detail: chapterTitle }); + return buildOgMeta({ + title: bookTitle, + detail: chapterTitle, + quote: getFallbackQuote(bookTitle, code), + }); } /** OG metadata for an essay. */ @@ -126,6 +222,7 @@ export function ogForEssay(title: string) { return buildOgMeta({ title, detail: "Essay by Śrīla Prabhupāda", + quote: CONTENT_TYPE_DESCRIPTIONS.essays, }); } @@ -134,6 +231,7 @@ export function ogForLetter(recipient: string, meta?: string) { return buildOgMeta({ title: `Letter to ${recipient}`, detail: meta || undefined, + quote: CONTENT_TYPE_DESCRIPTIONS.letters, }); } @@ -142,6 +240,7 @@ export function ogForJournal(journalTitle: string, entryTitle?: string) { return buildOgMeta({ title: journalTitle, detail: entryTitle || undefined, + quote: CONTENT_TYPE_DESCRIPTIONS.journals, }); } @@ -150,6 +249,7 @@ export function ogForMagazine(magazineTitle: string, issueTitle?: string) { return buildOgMeta({ title: magazineTitle, detail: issueTitle || undefined, + quote: CONTENT_TYPE_DESCRIPTIONS.magazines, }); } @@ -158,6 +258,42 @@ export function ogForOtherDocument(docTitle: string, chapterTitle?: string) { return buildOgMeta({ title: docTitle, detail: chapterTitle || undefined, + quote: CONTENT_TYPE_DESCRIPTIONS["other-documents"], + }); +} + +/** OG metadata for the disciples directory. */ +export function ogForDisciples() { + return buildOgMeta({ + title: "Disciples of Śrīla Prabhupāda", + quote: CONTENT_TYPE_DESCRIPTIONS.disciples, + }); +} + +/** OG metadata for letters filtered by year. */ +export function ogForLettersByYear(year: number, count: number) { + return buildOgMeta({ + title: `Letters from ${year}`, + detail: `${count} ${count === 1 ? "letter" : "letters"}`, + quote: `Śrīla Prabhupāda's correspondence from ${year} — personal letters guiding disciples and well-wishers in the science of Kṛṣṇa consciousness.`, + }); +} + +/** OG metadata for letters filtered by recipient. */ +export function ogForLettersByRecipient(name: string, count: number) { + return buildOgMeta({ + title: `Letters to ${name}`, + detail: `${count} ${count === 1 ? "letter" : "letters"}`, + quote: `Śrīla Prabhupāda's personal correspondence to ${name} — instructions, blessings, and guidance in devotional service.`, + }); +} + +/** OG metadata for letters filtered by location. */ +export function ogForLettersByLocation(location: string, count: number) { + return buildOgMeta({ + title: `Letters from ${location}`, + detail: `${count} ${count === 1 ? "letter" : "letters"}`, + quote: `Śrīla Prabhupāda's letters written from ${location} — chronicling the worldwide mission of the Hare Kṛṣṇa movement.`, }); } @@ -165,7 +301,7 @@ export function ogForOtherDocument(docTitle: string, chapterTitle?: string) { export function ogDefault() { return buildOgMeta({ title: "Prabhupāda Says", - description: - "Browse the books and teachings of His Divine Grace A.C. Bhaktivedanta Swami Prabhupāda", + description: SITE_DESCRIPTION, + quote: SITE_DESCRIPTION, }); }