"use client"; import { createContext, useContext } from "react"; import type { PostPageData } from "src/utils/getPostPageData"; // Derive types from PostPageData type NonNullPostPageData = NonNullable; export type PublicationContext = NonNullPostPageData["publication"]; export type DocumentContextValue = Pick< NonNullPostPageData, | "uri" | "normalizedDocument" | "normalizedPublication" | "postUrl" | "theme" | "prevNext" | "quotesAndMentions" | "publication" | "commentsCount" | "commentsCountByPage" | "mentions" | "recommendsCount" > & // Optional so non-post DocumentProvider consumers (publication pages, // previews) don't have to supply it; absent means ungated. Partial>; const DocumentContext = createContext(null); export function useDocument() { const ctx = useContext(DocumentContext); if (!ctx) throw new Error("useDocument must be used within DocumentProvider"); return ctx; } export function useDocumentOptional() { return useContext(DocumentContext); } export function DocumentProvider({ children, value, }: { children: React.ReactNode; value: DocumentContextValue; }) { return ( {children} ); }