shuding/nextra

`components` theme configuration to accept generic

Open

#1,978 opened on Jun 18, 2023

View on GitHub
 (4 comments) (0 reactions) (0 assignees)TypeScript (1,413 forks)user submission
enhancementgood first issue

Repository metrics

Stars
 (13,807 stars)
PR merge metrics
 (Avg merge 6d 16h) (3 merged PRs in 30d)

Description

Hi 👋

Context

I would like to create a custom component to be reusable inside all the documentation 😍

type IframeProps = {
  url: string;
};

export const Iframe: FunctionComponent<IframeProps> = ({ url }) => {
  return <iframe src={url} allowFullScreen className={styles.main} />;
};

Problem

Regarding the following documentation 👀

Capture d’écran 2023-06-18 à 09 57 24

In the code, type is define as components?: Record<string, FC> | undefined; but it's a little bit to strict because we can't pass any additional props.

Cannot assign type 'FC<OptionTableProps>' to type 'FC'.
  Parameter types 'props' and 'props' are incompatible.
    Unable to assign type '{}' to type 'OptionTableProps'. ts(2322)

Proposal solution

What about the possibility to accept a generic to pass additional props ? Is there any side effect for this improvement ?

components?: Record<string, FC<T>> | undefined;

I could open a PR if needed to support 😇 Thanks for it 🙏

Contributor guide