chore: code refactor
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { buildOgMeta } from "@/lib/og";
|
import { buildOgMeta } from "@/lib/og";
|
||||||
import {
|
import {
|
||||||
BookOpen,
|
BookOpen,
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getBbdMeta, getBbdIntroSegments } from "@/lib/bbd";
|
import { getBbdMeta, getBbdIntroSegments } from "@/lib/bbd";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getBookMeta, getSingleVerse, getChapterVerseIndex } from "@/lib/api";
|
import { getBookMeta, getSingleVerse, getChapterVerseIndex } from "@/lib/api";
|
||||||
import { ChapterViewer } from "@/app/(app)/books/chapter-viewer";
|
import { ChapterViewer } from "@/app/(app)/books/chapter-viewer";
|
||||||
import type { MobileNavGroup } from "@/components/mobile-nav";
|
import type { MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
import { ogForVerse, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForVerse, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
|
|
||||||
export const dynamic = "force-dynamic";
|
export const dynamic = "force-dynamic";
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getBookMeta } from "@/lib/api";
|
import { getBookMeta } from "@/lib/api";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { ExtractedVerseCount } from "../extracted-verse-count";
|
import { ExtractedVerseCount } from "../extracted-verse-count";
|
||||||
|
|
||||||
|
|||||||
@@ -10,12 +10,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
export const dynamic = "force-dynamic";
|
export const dynamic = "force-dynamic";
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getBkMeta } from "@/lib/bk";
|
import { getBkMeta } from "@/lib/bk";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import type { Metadata } from "next";
|
|||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import {
|
import {
|
||||||
getBookMeta,
|
getBookMeta,
|
||||||
@@ -12,7 +12,7 @@ import {
|
|||||||
type VerseRecord,
|
type VerseRecord,
|
||||||
} from "@/lib/api";
|
} from "@/lib/api";
|
||||||
import { ChapterViewer } from "@/app/(app)/books/chapter-viewer";
|
import { ChapterViewer } from "@/app/(app)/books/chapter-viewer";
|
||||||
import type { MobileNavGroup } from "@/components/mobile-nav";
|
import type { MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
import { ogForVerse, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForVerse, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
|
|
||||||
export const dynamic = "force-dynamic";
|
export const dynamic = "force-dynamic";
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { getChapterVerseIndex } from "@/lib/api";
|
|||||||
import { buildOgMeta } from "@/lib/og";
|
import { buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getBookMeta } from "@/lib/api";
|
import { getBookMeta } from "@/lib/api";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { ExtractedVerseCount } from "../extracted-verse-count";
|
import { ExtractedVerseCount } from "../extracted-verse-count";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
|
|||||||
@@ -10,12 +10,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
export const dynamic = "force-dynamic";
|
export const dynamic = "force-dynamic";
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getCbhcMeta } from "@/lib/cbhc";
|
import { getCbhcMeta } from "@/lib/cbhc";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ export const dynamic = "force-dynamic";
|
|||||||
|
|
||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getBookMeta, getSingleVerse, getChapterVerseIndex } from "@/lib/api";
|
import { getBookMeta, getSingleVerse, getChapterVerseIndex } from "@/lib/api";
|
||||||
import { ChapterViewer } from "@/app/(app)/books/chapter-viewer";
|
import { ChapterViewer } from "@/app/(app)/books/chapter-viewer";
|
||||||
import type { MobileNavGroup } from "@/components/mobile-nav";
|
import type { MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
import { ogForVerse, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForVerse, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
|
|
||||||
type ChapterInfo = {
|
type ChapterInfo = {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { ExtractedVerseCount } from "../../extracted-verse-count";
|
import { ExtractedVerseCount } from "../../extracted-verse-count";
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import type { Metadata } from "next";
|
|||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { getBookMeta } from "@/lib/api";
|
import { getBookMeta } from "@/lib/api";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { Badge } from "@/components/ui/badge";
|
import { Badge } from "@/components/ui/badge";
|
||||||
import { ExtractedVerseCount } from "../extracted-verse-count";
|
import { ExtractedVerseCount } from "../extracted-verse-count";
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import { Card, CardHeader, CardContent } from "@/components/ui/card";
|
|||||||
import { Badge } from "@/components/ui/badge";
|
import { Badge } from "@/components/ui/badge";
|
||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight, Loader2 } from "lucide-react";
|
import { ChevronLeft, ChevronRight, Loader2 } from "lucide-react";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Types
|
// Types
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getDsMeta, getDsIntroSegments } from "@/lib/ds";
|
import { getDsMeta, getDsIntroSegments } from "@/lib/ds";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getEjMeta, getEjIntroSegments } from "@/lib/ej";
|
import { getEjMeta, getEjIntroSegments } from "@/lib/ej";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getEkMeta, getEkIntroSegments } from "@/lib/ek";
|
import { getEkMeta, getEkIntroSegments } from "@/lib/ek";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -10,12 +10,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
export const dynamic = "force-dynamic";
|
export const dynamic = "force-dynamic";
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getGgMeta, getGgIntroSegments } from "@/lib/gg";
|
import { getGgMeta, getGgIntroSegments } from "@/lib/gg";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getHkhMeta, getHkhIntroSegments } from "@/lib/hkh";
|
import { getHkhMeta, getHkhIntroSegments } from "@/lib/hkh";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -11,12 +11,12 @@ import {
|
|||||||
type IsoSidebarItem,
|
type IsoSidebarItem,
|
||||||
} from "@/lib/iso";
|
} from "@/lib/iso";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Type guards
|
// Type guards
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getIsoMeta, getIsoIntroSegments } from "@/lib/iso";
|
import { getIsoMeta, getIsoIntroSegments } from "@/lib/iso";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -6,12 +6,12 @@ import { notFound } from "next/navigation";
|
|||||||
import { getProseChapter, getProseChapters } from "@/lib/api";
|
import { getProseChapter, getProseChapters } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
export async function generateMetadata({
|
export async function generateMetadata({
|
||||||
params,
|
params,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { notFound } from "next/navigation";
|
|||||||
import { getBookMeta, getProseChapters } from "@/lib/api";
|
import { getBookMeta, getProseChapters } from "@/lib/api";
|
||||||
import { buildOgMeta } from "@/lib/og";
|
import { buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export async function generateMetadata({
|
export async function generateMetadata({
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getBookMeta } from "@/lib/api";
|
import { getBookMeta } from "@/lib/api";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { Badge } from "@/components/ui/badge";
|
import { Badge } from "@/components/ui/badge";
|
||||||
|
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getLclMeta, getLclIntroSegments } from "@/lib/lcl";
|
import { getLclMeta, getLclIntroSegments } from "@/lib/lcl";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
export async function generateMetadata({
|
export async function generateMetadata({
|
||||||
params,
|
params,
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getLobMeta, getLobIntroSegments } from "@/lib/lob";
|
import { getLobMeta, getLobIntroSegments } from "@/lib/lob";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
export async function generateMetadata({
|
export async function generateMetadata({
|
||||||
params,
|
params,
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getMgMeta, getMgIntroSegments } from "@/lib/mg";
|
import { getMgMeta, getMgIntroSegments } from "@/lib/mg";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import {
|
import {
|
||||||
getBookMeta,
|
getBookMeta,
|
||||||
@@ -11,7 +11,7 @@ import {
|
|||||||
type VerseRecord,
|
type VerseRecord,
|
||||||
} from "@/lib/api";
|
} from "@/lib/api";
|
||||||
import { ChapterViewer } from "@/app/(app)/books/chapter-viewer";
|
import { ChapterViewer } from "@/app/(app)/books/chapter-viewer";
|
||||||
import type { MobileNavGroup } from "@/components/mobile-nav";
|
import type { MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import { ogForVerse, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForVerse, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { getChapterVerseIndex } from "@/lib/api";
|
|||||||
import { buildOgMeta } from "@/lib/og";
|
import { buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getBookMeta } from "@/lib/api";
|
import { getBookMeta } from "@/lib/api";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { ExtractedVerseCount } from "../extracted-verse-count";
|
import { ExtractedVerseCount } from "../extracted-verse-count";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getMogMeta, getMogIntroSegments } from "@/lib/mog";
|
import { getMogMeta, getMogIntroSegments } from "@/lib/mog";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import type { Metadata } from "next";
|
|||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import {
|
import {
|
||||||
getBookMeta,
|
getBookMeta,
|
||||||
@@ -15,7 +15,7 @@ import {
|
|||||||
} from "@/lib/api";
|
} from "@/lib/api";
|
||||||
import { ogForVerse, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForVerse, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { ChapterViewer } from "@/app/(app)/books/chapter-viewer";
|
import { ChapterViewer } from "@/app/(app)/books/chapter-viewer";
|
||||||
import type { MobileNavGroup } from "@/components/mobile-nav";
|
import type { MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
type NbsMeta = {
|
type NbsMeta = {
|
||||||
book: string;
|
book: string;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { getChapterVerseIndex } from "@/lib/api";
|
|||||||
import { buildOgMeta } from "@/lib/og";
|
import { buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getBookMeta } from "@/lib/api";
|
import { getBookMeta } from "@/lib/api";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { ExtractedVerseCount } from "../extracted-verse-count";
|
import { ExtractedVerseCount } from "../extracted-verse-count";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getNodMeta, getNodIntroSegments } from "@/lib/nod";
|
import { getNodMeta, getNodIntroSegments } from "@/lib/nod";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -11,12 +11,12 @@ import {
|
|||||||
type NoiSidebarItem,
|
type NoiSidebarItem,
|
||||||
} from "@/lib/noi";
|
} from "@/lib/noi";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Type guards
|
// Type guards
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getNoiMeta, getNoiIntroSegments } from "@/lib/noi";
|
import { getNoiMeta, getNoiIntroSegments } from "@/lib/noi";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getOchkmMeta, getOchkmIntroSegments } from "@/lib/ochkm";
|
import { getOchkmMeta, getOchkmIntroSegments } from "@/lib/ochkm";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getOwkMeta, getOwkIntroSegments } from "@/lib/owk";
|
import { getOwkMeta, getOwkIntroSegments } from "@/lib/owk";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { getAllBooks, type BookMeta } from "@/lib/api";
|
import { getAllBooks, type BookMeta } from "@/lib/api";
|
||||||
import { buildOgMeta } from "@/lib/og";
|
import { buildOgMeta } from "@/lib/og";
|
||||||
import { BooksGrid, type BookInfo } from "./books-grid";
|
import { BooksGrid, type BookInfo } from "./books-grid";
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getPkMeta } from "@/lib/pk";
|
import { getPkMeta } from "@/lib/pk";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getPoyMeta, getPoyIntroSegments } from "@/lib/poy";
|
import { getPoyMeta, getPoyIntroSegments } from "@/lib/poy";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getPqpaMeta, getPqpaIntroSegments } from "@/lib/pqpa";
|
import { getPqpaMeta, getPqpaIntroSegments } from "@/lib/pqpa";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getRvMeta, getRvIntroSegments } from "@/lib/rv";
|
import { getRvMeta, getRvIntroSegments } from "@/lib/rv";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ export const dynamic = "force-dynamic";
|
|||||||
|
|
||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getBookMeta, getSingleVerse, getChapterVerseIndex } from "@/lib/api";
|
import { getBookMeta, getSingleVerse, getChapterVerseIndex } from "@/lib/api";
|
||||||
import { ChapterViewer } from "@/app/(app)/books/chapter-viewer";
|
import { ChapterViewer } from "@/app/(app)/books/chapter-viewer";
|
||||||
import type { MobileNavGroup } from "@/components/mobile-nav";
|
import type { MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
import { ogForVerse, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForVerse, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
|
|
||||||
type ChapterInfo = {
|
type ChapterInfo = {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { ExtractedVerseCount } from "../../extracted-verse-count";
|
import { ExtractedVerseCount } from "../../extracted-verse-count";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { Badge } from "@/components/ui/badge";
|
import { Badge } from "@/components/ui/badge";
|
||||||
import { ExtractedVerseCount } from "../extracted-verse-count";
|
import { ExtractedVerseCount } from "../extracted-verse-count";
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getBookMeta, getSingleVerse, getChapterVerseIndex } from "@/lib/api";
|
import { getBookMeta, getSingleVerse, getChapterVerseIndex } from "@/lib/api";
|
||||||
import { ChapterViewer } from "@/app/(app)/books/chapter-viewer";
|
import { ChapterViewer } from "@/app/(app)/books/chapter-viewer";
|
||||||
import type { MobileNavGroup } from "@/components/mobile-nav";
|
import type { MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
import { ogForVerse, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForVerse, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
|
|
||||||
export const dynamic = "force-dynamic";
|
export const dynamic = "force-dynamic";
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getBookMeta } from "@/lib/api";
|
import { getBookMeta } from "@/lib/api";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { ExtractedVerseCount } from "../extracted-verse-count";
|
import { ExtractedVerseCount } from "../extracted-verse-count";
|
||||||
|
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getSsrMeta, getSsrIntroSegments } from "@/lib/ssr";
|
import { getSsrMeta, getSsrIntroSegments } from "@/lib/ssr";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -13,12 +13,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getSvaMeta, getSvaIntroSegments } from "@/lib/sva";
|
import { getSvaMeta, getSvaIntroSegments } from "@/lib/sva";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getTlcMeta, getTlcIntroSegments } from "@/lib/tlc";
|
import { getTlcMeta, getTlcIntroSegments } from "@/lib/tlc";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getTlkMeta, getTlkIntroSegments } from "@/lib/tlk";
|
import { getTlkMeta, getTlkIntroSegments } from "@/lib/tlk";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getTqkMeta, getTqkIntroSegments } from "@/lib/tqk";
|
import { getTqkMeta, getTqkIntroSegments } from "@/lib/tqk";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getTtpMeta } from "@/lib/ttp";
|
import { getTtpMeta } from "@/lib/ttp";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -11,12 +11,12 @@ import {
|
|||||||
import { getProseChapter } from "@/lib/api";
|
import { getProseChapter } from "@/lib/api";
|
||||||
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { BOOK_NAMES } from "@/lib/constants";
|
import { BOOK_NAMES } from "@/lib/constants";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getVaMeta } from "@/lib/va";
|
import { getVaMeta } from "@/lib/va";
|
||||||
import { ogForBook } from "@/lib/og";
|
import { ogForBook } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export function generateMetadata(): Metadata {
|
export function generateMetadata(): Metadata {
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import {
|
|||||||
type Collection,
|
type Collection,
|
||||||
type Post,
|
type Post,
|
||||||
} from "@/lib/social";
|
} from "@/lib/social";
|
||||||
import { PostViews } from "@/components/social/post-views";
|
import { PostViews } from "@/components/social/post/post-views";
|
||||||
|
|
||||||
export default function PublicCollectionPage(props: {
|
export default function PublicCollectionPage(props: {
|
||||||
params: Promise<{ id: string }>;
|
params: Promise<{ id: string }>;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ export const dynamic = "force-dynamic";
|
|||||||
|
|
||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { ogForDisciples } from "@/lib/og";
|
import { ogForDisciples } from "@/lib/og";
|
||||||
import {
|
import {
|
||||||
getTotalDiscipleCount,
|
getTotalDiscipleCount,
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ import type { Metadata } from "next";
|
|||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { ogForEssay, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForEssay, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
import { bff, bffList } from "@/lib/bff";
|
import { bff, bffList } from "@/lib/bff";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ export const dynamic = "force-dynamic";
|
|||||||
|
|
||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { buildOgMeta } from "@/lib/og";
|
import { buildOgMeta } from "@/lib/og";
|
||||||
import { bffList } from "@/lib/bff";
|
import { bffList } from "@/lib/bff";
|
||||||
import { EssaysGrid } from "./essays-grid";
|
import { EssaysGrid } from "./essays-grid";
|
||||||
|
|||||||
@@ -11,12 +11,12 @@ import {
|
|||||||
type JournalSidebarItem,
|
type JournalSidebarItem,
|
||||||
} from "@/lib/journals";
|
} from "@/lib/journals";
|
||||||
import { ogForJournal, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForJournal, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
export async function generateMetadata({
|
export async function generateMetadata({
|
||||||
params,
|
params,
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import {
|
|||||||
type JournalChapterEntry,
|
type JournalChapterEntry,
|
||||||
} from "@/lib/journals";
|
} from "@/lib/journals";
|
||||||
import { ogForJournal } from "@/lib/og";
|
import { ogForJournal } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export async function generateMetadata({
|
export async function generateMetadata({
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ export const dynamic = "force-dynamic";
|
|||||||
|
|
||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { buildOgMeta } from "@/lib/og";
|
import { buildOgMeta } from "@/lib/og";
|
||||||
import {
|
import {
|
||||||
Card,
|
Card,
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { Suspense } from "react";
|
import { Suspense } from "react";
|
||||||
import { SiteHeader } from "@/components/site-header";
|
import { SiteHeader } from "@/components/layout/site-header";
|
||||||
import { SiteSidebar } from "@/components/site-sidebar";
|
import { SiteSidebar } from "@/components/layout/site-sidebar";
|
||||||
import { SiteBottomNav } from "@/components/site-bottom-nav";
|
import { SiteBottomNav } from "@/components/layout/site-bottom-nav";
|
||||||
import { SiteFooter } from "@/components/site-footer";
|
import { SiteFooter } from "@/components/layout/site-footer";
|
||||||
import { VerifyEmailBanner } from "@/components/auth/verify-email-banner";
|
import { VerifyEmailBanner } from "@/components/auth/verify-email-banner";
|
||||||
import { TextSelectionToolbar } from "@/components/text-selection-toolbar";
|
import { TextSelectionToolbar } from "@/components/text-selection-toolbar";
|
||||||
import { TextHighlighter } from "@/components/text-highlighter";
|
import { TextHighlighter } from "@/components/text-highlighter";
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getLetter, getAdjacentLetters } from "@/lib/letters";
|
import { getLetter, getAdjacentLetters } from "@/lib/letters";
|
||||||
import { ogForLetter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForLetter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ export const dynamic = "force-dynamic";
|
|||||||
|
|
||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { buildOgMeta } from "@/lib/og";
|
import { buildOgMeta } from "@/lib/og";
|
||||||
import {
|
import {
|
||||||
getLetterYears,
|
getLetterYears,
|
||||||
|
|||||||
@@ -11,12 +11,12 @@ import {
|
|||||||
type MagazineSidebarItem,
|
type MagazineSidebarItem,
|
||||||
} from "@/lib/magazines";
|
} from "@/lib/magazines";
|
||||||
import { ogForMagazine, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForMagazine, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
export async function generateMetadata({
|
export async function generateMetadata({
|
||||||
params,
|
params,
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import {
|
|||||||
type MagazineChapterEntry,
|
type MagazineChapterEntry,
|
||||||
} from "@/lib/magazines";
|
} from "@/lib/magazines";
|
||||||
import { ogForMagazine } from "@/lib/og";
|
import { ogForMagazine } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export async function generateMetadata({
|
export async function generateMetadata({
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ export const dynamic = "force-dynamic";
|
|||||||
|
|
||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import {
|
import {
|
||||||
Card,
|
Card,
|
||||||
CardHeader,
|
CardHeader,
|
||||||
|
|||||||
@@ -14,13 +14,14 @@
|
|||||||
|
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
import Image from "next/image";
|
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { Bell } from "lucide-react";
|
import { Bell } from "lucide-react";
|
||||||
import { useAuth } from "@/components/auth/auth-provider";
|
import { useAuth } from "@/components/auth/auth-provider";
|
||||||
import { useAuthGate } from "@/components/auth/auth-gate";
|
import { useAuthGate } from "@/components/auth/auth-gate";
|
||||||
import { useNotifications } from "@/components/notifications/notifications-provider";
|
import { useNotifications } from "@/components/notifications/notifications-provider";
|
||||||
import { notifications, type AppNotification } from "@/lib/social";
|
import { notifications, type AppNotification } from "@/lib/social";
|
||||||
|
import { UserAvatar } from "@/components/ui/user-avatar";
|
||||||
|
import { timeAgo } from "@/lib/time";
|
||||||
|
|
||||||
export default function NotificationsPage() {
|
export default function NotificationsPage() {
|
||||||
const { user, loading } = useAuth();
|
const { user, loading } = useAuth();
|
||||||
@@ -122,7 +123,7 @@ function NotificationRow({
|
|||||||
<div
|
<div
|
||||||
className={cnRow(unread)}
|
className={cnRow(unread)}
|
||||||
>
|
>
|
||||||
<Avatar src={n.actor_avatar_url ?? null} name={display} />
|
<UserAvatar src={n.actor_avatar_url} name={display} />
|
||||||
<div className="min-w-0 flex-1">
|
<div className="min-w-0 flex-1">
|
||||||
<p className="text-sm text-foreground leading-snug">
|
<p className="text-sm text-foreground leading-snug">
|
||||||
<span className="font-semibold">{display}</span> {message}
|
<span className="font-semibold">{display}</span> {message}
|
||||||
@@ -194,34 +195,6 @@ function messageFor(n: AppNotification): string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function Avatar({ src, name }: { src: string | null; name: string }) {
|
|
||||||
if (src) {
|
|
||||||
return (
|
|
||||||
<Image
|
|
||||||
src={src}
|
|
||||||
alt={name}
|
|
||||||
width={40}
|
|
||||||
height={40}
|
|
||||||
className="size-10 rounded-full object-cover ring-1 ring-foreground/10 shrink-0"
|
|
||||||
unoptimized
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
const initials =
|
|
||||||
name
|
|
||||||
.replace(/^@/, "")
|
|
||||||
.split(/\s+/)
|
|
||||||
.map((p) => p[0])
|
|
||||||
.slice(0, 2)
|
|
||||||
.join("")
|
|
||||||
.toUpperCase() || "?";
|
|
||||||
return (
|
|
||||||
<div className="size-10 shrink-0 rounded-full bg-primary/15 text-primary flex items-center justify-center text-sm font-semibold ring-1 ring-foreground/10">
|
|
||||||
{initials}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function Empty() {
|
function Empty() {
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col items-center text-center gap-3 py-16 text-muted-foreground">
|
<div className="flex flex-col items-center text-center gap-3 py-16 text-muted-foreground">
|
||||||
@@ -231,18 +204,3 @@ function Empty() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Compact relative time ("just now", "5m", "3h", "2d"), falling back to
|
|
||||||
* a date for anything older than a week. */
|
|
||||||
function timeAgo(iso: string): string {
|
|
||||||
const then = new Date(iso).getTime();
|
|
||||||
if (Number.isNaN(then)) return "";
|
|
||||||
const secs = Math.max(0, Math.floor((Date.now() - then) / 1000));
|
|
||||||
if (secs < 45) return "just now";
|
|
||||||
const mins = Math.floor(secs / 60);
|
|
||||||
if (mins < 60) return `${mins}m ago`;
|
|
||||||
const hours = Math.floor(mins / 60);
|
|
||||||
if (hours < 24) return `${hours}h ago`;
|
|
||||||
const days = Math.floor(hours / 24);
|
|
||||||
if (days < 7) return `${days}d ago`;
|
|
||||||
return new Date(iso).toLocaleDateString();
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -11,12 +11,12 @@ import {
|
|||||||
type OtherDocumentSidebarItem,
|
type OtherDocumentSidebarItem,
|
||||||
} from "@/lib/other-documents";
|
} from "@/lib/other-documents";
|
||||||
import { ogForOtherDocument, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
import { ogForOtherDocument, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { MobileNav, type MobileNavGroup } from "@/components/mobile-nav";
|
import { MobileNav, type MobileNavGroup } from "@/components/layout/mobile-nav";
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Metadata
|
// Metadata
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import Link from "next/link";
|
|||||||
import { notFound } from "next/navigation";
|
import { notFound } from "next/navigation";
|
||||||
import { getOtherDocumentMeta, slugToBookCode } from "@/lib/other-documents";
|
import { getOtherDocumentMeta, slugToBookCode } from "@/lib/other-documents";
|
||||||
import { ogForOtherDocument } from "@/lib/og";
|
import { ogForOtherDocument } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
|
|
||||||
export async function generateMetadata({
|
export async function generateMetadata({
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ export const dynamic = "force-dynamic";
|
|||||||
|
|
||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { getAllOtherDocuments, bookCodeToSlug } from "@/lib/other-documents";
|
import { getAllOtherDocuments, bookCodeToSlug } from "@/lib/other-documents";
|
||||||
import { OtherDocumentsGrid } from "./other-documents-grid";
|
import { OtherDocumentsGrid } from "./other-documents-grid";
|
||||||
import { buildOgMeta } from "@/lib/og";
|
import { buildOgMeta } from "@/lib/og";
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
import { useState, useEffect, useCallback, useRef, Suspense } from "react";
|
import { useState, useEffect, useCallback, useRef, Suspense } from "react";
|
||||||
import { useSearchParams, useRouter } from "next/navigation";
|
import { useSearchParams, useRouter } from "next/navigation";
|
||||||
import Image from "next/image";
|
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
import { UserAvatar } from "@/components/ui/user-avatar";
|
||||||
import { Input } from "@/components/ui/input";
|
import { Input } from "@/components/ui/input";
|
||||||
import { Badge } from "@/components/ui/badge";
|
import { Badge } from "@/components/ui/badge";
|
||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
@@ -858,7 +858,6 @@ function ResultMeta({ result }: { result: SearchResult }) {
|
|||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
function UserResultCard({ user }: { user: UserResult }) {
|
function UserResultCard({ user }: { user: UserResult }) {
|
||||||
const initial = user.name?.charAt(0)?.toUpperCase() || "?";
|
|
||||||
return (
|
return (
|
||||||
<Link
|
<Link
|
||||||
href={`/u/${user.handle}`}
|
href={`/u/${user.handle}`}
|
||||||
@@ -867,20 +866,12 @@ function UserResultCard({ user }: { user: UserResult }) {
|
|||||||
"hover:ring-foreground/25 hover:shadow-sm transition-all",
|
"hover:ring-foreground/25 hover:shadow-sm transition-all",
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{user.avatar_url ? (
|
<UserAvatar
|
||||||
<Image
|
|
||||||
src={user.avatar_url}
|
src={user.avatar_url}
|
||||||
alt={user.name}
|
name={user.name}
|
||||||
width={56}
|
className="size-14"
|
||||||
height={56}
|
textClassName="text-xl"
|
||||||
className="size-14 rounded-full object-cover ring-1 ring-foreground/10 shrink-0"
|
|
||||||
unoptimized
|
|
||||||
/>
|
/>
|
||||||
) : (
|
|
||||||
<div className="size-14 rounded-full bg-primary/15 text-primary flex items-center justify-center text-xl font-semibold ring-1 ring-foreground/10 shrink-0">
|
|
||||||
{initial}
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
<div className="min-w-0 flex-1">
|
<div className="min-w-0 flex-1">
|
||||||
<p className="text-sm font-semibold text-foreground truncate">
|
<p className="text-sm font-semibold text-foreground truncate">
|
||||||
{user.name}
|
{user.name}
|
||||||
|
|||||||
@@ -8,14 +8,14 @@ import {
|
|||||||
getAdjacentTranscriptions,
|
getAdjacentTranscriptions,
|
||||||
} from "@/lib/transcriptions";
|
} from "@/lib/transcriptions";
|
||||||
import { buildOgMeta, ogForTranscription, extractQuoteFromHl } from "@/lib/og";
|
import { buildOgMeta, ogForTranscription, extractQuoteFromHl } from "@/lib/og";
|
||||||
import { PageHeader } from "@/components/page-header";
|
import { PageHeader } from "@/components/layout/page-header";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { Badge } from "@/components/ui/badge";
|
import { Badge } from "@/components/ui/badge";
|
||||||
import { buttonVariants } from "@/components/ui/button";
|
import { buttonVariants } from "@/components/ui/button";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { ChevronLeft, ChevronRight, Clock, MapPin, Users } from "lucide-react";
|
import { ChevronLeft, ChevronRight, Clock, MapPin, Users } from "lucide-react";
|
||||||
import { PlayAudioButton } from "./play-audio-button";
|
import { PlayAudioButton } from "./play-audio-button";
|
||||||
import { FindInPage } from "@/components/find-in-page";
|
import { FindInPage } from "@/components/layout/find-in-page";
|
||||||
|
|
||||||
export async function generateMetadata({
|
export async function generateMetadata({
|
||||||
params,
|
params,
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user