alinea
Version:
[](https://npmjs.org/package/alinea) [](https://packagephobia.com/result?p=alinea)
13 lines (12 loc) • 628 B
TypeScript
import { 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>;