@@ -10,9 +10,9 @@ import type {Element} from 'hast'
1010 * @returns
1111 * Result.
1212 */
13- export type FunctionComponent < ComponentProps > = (
13+ export type FunctionComponent < JsxElement , ComponentProps > = (
1414 props : ComponentProps
15- ) => JSX . Element | string | null | undefined
15+ ) => JsxElement | string | null | undefined
1616
1717/**
1818 * Class component: given props, returns an instance.
@@ -24,22 +24,22 @@ export type FunctionComponent<ComponentProps> = (
2424 * @returns
2525 * Instance.
2626 */
27- export type ClassComponent < ComponentProps > = new (
27+ export type ClassComponent < JsxElementClass , ComponentProps > = new (
2828 props : ComponentProps
29- ) => JSX . ElementClass
29+ ) => JsxElementClass
3030
3131/**
3232 * Function or class component.
3333 *
34- * You can access props at `JSX .IntrinsicElements`.
35- * For example, to find props for `a`, use `JSX .IntrinsicElements['a']`.
34+ * You can access props at `LocalJsx .IntrinsicElements`.
35+ * For example, to find props for `a`, use `LocalJsx .IntrinsicElements['a']`.
3636 *
3737 * @typeParam ComponentProps
3838 * Props type.
3939 */
40- export type Component < ComponentProps > =
41- | ClassComponent < ComponentProps >
42- | FunctionComponent < ComponentProps >
40+ export type Component < JsxElement , JsxElementClass , ComponentProps > =
41+ | ClassComponent < JsxElementClass , ComponentProps >
42+ | FunctionComponent < JsxElement , ComponentProps >
4343
4444/**
4545 * Extra fields we pass.
@@ -49,17 +49,21 @@ export type ExtraProps = {node?: Element | undefined}
4949/**
5050 * Possible components to use.
5151 *
52- * Each key is a tag name typed in `JSX .IntrinsicElements`.
52+ * Each key is a tag name typed in `LocalJsx .IntrinsicElements`.
5353 * Each value is either a different tag name, or a component accepting the
5454 * corresponding props (and an optional `node` prop if `passNode` is on).
5555 *
56- * You can access props at `JSX .IntrinsicElements`.
57- * For example, to find props for `a`, use `JSX .IntrinsicElements['a']`.
56+ * You can access props at `LocalJsx .IntrinsicElements`.
57+ * For example, to find props for `a`, use `LocalJsx .IntrinsicElements['a']`.
5858 */
5959// Note: this type has to be in `.ts` or `.d.ts`, otherwise TSC hardcodes
6060// react into the `.d.ts` file.
61- export type Components = {
62- [ TagName in keyof JSX . IntrinsicElements ] :
63- | Component < JSX . IntrinsicElements [ TagName ] & ExtraProps >
64- | keyof JSX . IntrinsicElements
61+ export type Components < JsxElement , JsxElementClass , JsxIntrinsicElements > = {
62+ [ TagName in keyof JsxIntrinsicElements ] :
63+ | Component <
64+ JsxElement ,
65+ JsxElementClass ,
66+ JsxIntrinsicElements [ TagName ] & ExtraProps
67+ >
68+ | keyof JsxIntrinsicElements
6569}
0 commit comments