'use client'; /** * Table of Contents Context * * Allows documentation pages to pass their TOC items up to the layout * so the layout can render the TOC in the right sidebar. * * Usage in pages: * ```tsx * * * * ``` * * Usage in layout: * ```tsx * const { tocItems } = useToc(); * return ; * ``` */ import { createContext, useContext, ReactNode } from 'react'; export interface TocItem { id: string; text: string; level: number; } interface TocContextValue { tocItems: TocItem[]; } const TocContext = createContext(undefined); interface TocProviderProps { tocItems: TocItem[]; children: ReactNode; } export const TocProvider = ({ tocItems, children }: TocProviderProps) => { return {children}; }; export const useToc = (): TocContextValue => { const context = useContext(TocContext); if (!context) { // Return empty array if no provider (allows layout to work without TOC) return { tocItems: [] }; } return context; };