diff --git a/.changeset/poor-rings-shop.md b/.changeset/poor-rings-shop.md new file mode 100644 index 00000000000..d4bc66214be --- /dev/null +++ b/.changeset/poor-rings-shop.md @@ -0,0 +1,7 @@ +--- +'nextra-theme-blog': patch +'nextra-theme-docs': patch +'nextra': patch +--- + +Add a generic for `themeConfig` in `NextraThemeLayoutProps` to improve type inference. diff --git a/packages/nextra-theme-blog/src/index.tsx b/packages/nextra-theme-blog/src/index.tsx index fc3422e98bb..86b0ee1f56b 100644 --- a/packages/nextra-theme-blog/src/index.tsx +++ b/packages/nextra-theme-blog/src/index.tsx @@ -9,7 +9,7 @@ import { components, HeadingContext } from './mdx-theme' import Meta from './meta' import Nav from './nav' import { PostsLayout } from './posts-layout' -import type { BlogFrontMatter } from './types' +import type { BlogFrontMatter, NextraBlogTheme } from './types' import { isValidDate } from './utils/date' const layoutSet = new Set(['post', 'page', 'posts', 'tag']) @@ -18,7 +18,7 @@ export default function NextraLayout({ children, pageOpts, themeConfig -}: NextraThemeLayoutProps) { +}: NextraThemeLayoutProps) { const config = { ...DEFAULT_THEME, ...themeConfig } const ref = useRef(null) diff --git a/packages/nextra/src/types.ts b/packages/nextra/src/types.ts index 40476a82faa..bd747d14b7b 100644 --- a/packages/nextra/src/types.ts +++ b/packages/nextra/src/types.ts @@ -93,10 +93,13 @@ export type Nextra = ( export type ThemeConfig = any | null -export type NextraThemeLayoutProps = { - pageOpts: PageOpts +export type NextraThemeLayoutProps< + TFrontMatter = FrontMatter, + TThemeConfig = ThemeConfig +> = { + pageOpts: PageOpts pageProps: any - themeConfig: ThemeConfig + themeConfig: TThemeConfig children: ReactNode }