UNPKG

next-mdxlayer

Version:

Next.js plugin to integrate mdxlayer CLI and generated content

45 lines (44 loc) 1.71 kB
import { default as React } from 'react'; type IntrinsicMDXComponents = { [K in keyof React.JSX.IntrinsicElements]?: React.ComponentType<React.JSX.IntrinsicElements[K]>; }; export type MDXComponents = IntrinsicMDXComponents & Record<string, React.ComponentType<any>>; interface MDXContentProps { [props: string]: unknown; components?: MDXComponents; } export declare const getMDXComponent: (code: string, globals?: Record<string, unknown>) => React.FC<MDXContentProps>; /** * A React hook to render MDX content generated by `mdxlayer`. * * This is intended to be used with the output from `mdxlayer`, which compiles MDX files * into serialized JavaScript code (a string function body). * * @param code - The MDX runtime code string generated by `mdxlayer` * @param globals - Optional global components or utilities to inject * @returns A React component ready to render the MDX content * * @example * ```tsx * import { useMDXComponent } from 'next-mdxlayer/hook'; * import { allServices } from 'mdxlayer/generated'; * import MyAudioComponent from './audio' * import MyIntroComponent from './intro' * * export default function MyPage() { * const MDXComponent = useMDXComponent(allServices[0]._body.code); * return ( * <MDXComponent * components={{ * a: (props) => <a {...props} className="underline text-blue-600" />, * img: (props) => <img {...props} style={{ maxWidth: '100%' }} />, * Audio: MyAudioComponent, * Introduction: MyIntroComponent, * }} * /> * ); * } * ``` */ export declare const useMDXComponent: (code?: string, globals?: Record<string, unknown>) => React.FC<MDXContentProps>; export {};