shuding/nextra

`components` theme configuration to accept generic

Open

#1.978 aberto em 18 de jun. de 2023

Ver no GitHub
 (4 comments) (0 reactions) (0 assignees)TypeScript (1.413 forks)user submission
enhancementgood first issue

Métricas do repositório

Stars
 (13.807 stars)
Métricas de merge de PR
 (Mesclagem média 6d 16h) (3 fundiu PRs em 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 🙏

Guia do colaborador