alinea
Version:
Headless git-based CMS
13 lines (12 loc) • 633 B
TypeScript
import { type ForwardRefRenderFunction } from 'react';
export type As<Props = any> = React.ElementType<Props>;
export type PropsWithAs<Props = {}, Type extends As = As> = Props & Omit<React.ComponentProps<Type>, 'as' | keyof Props> & {
as?: Type;
};
export type ComponentWithAs<Props, DefaultType extends As> = {
<Type extends As>(props: PropsWithAs<Props, Type> & {
as: Type;
}): JSX.Element;
(props: PropsWithAs<Props, DefaultType>): JSX.Element;
};
export declare function forwardRefWithAs<Props, DefaultType extends As>(component: ForwardRefRenderFunction<any, any>): ComponentWithAs<Props, DefaultType>;