UNPKG

@ozen-ui/kit

Version:

React component library

18 lines (17 loc) 1.59 kB
import type { ComponentPropsWithRef, ElementType, ComponentPropsWithoutRef, ReactElement } from 'react'; declare const defaultElement = "div"; declare const defaultName = "as"; export type PolymorphicComponentPropsWithRef<Props, As extends ElementType, Name extends string = typeof defaultName> = Props & { [key in Name]?: As; } & Omit<ComponentPropsWithRef<As>, keyof Props>; export type PolymorphicComponentPropsWithoutRef<Props, As extends ElementType, Name extends string = typeof defaultName> = Props & { [key in Name]?: As; } & Omit<ComponentPropsWithoutRef<As>, keyof Props>; export type PolymorphicComponentRef<As extends ElementType> = ComponentPropsWithRef<As>['ref']; type ComponentWithAs<Props, DefaultTag extends ElementType = typeof defaultElement, Name extends string = typeof defaultName> = <As extends ElementType = DefaultTag>(props: PolymorphicComponentPropsWithRef<Props, As, Name>) => ReactElement | null; export type PolymorphicComponentWithRef<Props, As extends ElementType, Name extends string = typeof defaultName> = ComponentWithAs<Props, As, Name> & { displayName?: string | undefined; }; type ForwardRefWithAs<Props, Name extends string = typeof defaultName> = <As extends ElementType>(props: PolymorphicComponentPropsWithRef<Props, As, Name>, ref: PolymorphicComponentRef<As>) => ReactElement | null; export declare function polymorphicComponentWithRef<Props, As extends ElementType = typeof defaultElement, Name extends string = typeof defaultName>(baseComponent: ForwardRefWithAs<Props, Name>): PolymorphicComponentWithRef<Props, As, Name>; export {};