- navigation: SiteHeader component + useHeader hook - blog: ArticleCard, ArticleList, ArticleDetail + useArticleList, useArticleBySlug hooks - marketing-pages: PageHero, PageContent + usePageBySlug, useSiteSettings hooks - App pages now thin server wrappers that prefetch + hydrate; feature components own their data fetching via useSuspenseQuery
13 lines
363 B
TypeScript
13 lines
363 B
TypeScript
"use client";
|
|
|
|
import { useSuspenseQuery } from "@tanstack/react-query";
|
|
import { useTRPC } from "@repo/core-trpc";
|
|
import type { Page } from "../../entities/models/page";
|
|
|
|
export function usePageBySlug(slug: string) {
|
|
const trpc = useTRPC();
|
|
return useSuspenseQuery(
|
|
trpc.marketingPages.pageBySlug.queryOptions({ slug }),
|
|
) as { data: Page | null };
|
|
}
|