UNPKG

@stratakit/react

Version:

A React component library for StrataKit

38 lines (37 loc) 1.53 kB
import * as React from "react"; /** * As defined in {@link https://github.com/iTwin/iTwinUI/blob/b73924dc9db9e460772798162369789384f65133/packages/itwinui-react/src/utils/props.ts#L25 iTwinUI}. * * Makes `as` prop available and merges original OwnProps and the inferred props from `as` element. * Extends ForwardRefExoticComponent so ref gets the correct type. * * `DefaultAs` should be the default element that is used for the `as` prop. * * @example * const Button = React.forwardRef((props, forwardedRef) => { * // ... * }) as PolymorphicForwardRefComponent<'button', ButtonOwnProps>; * * @private */ export interface PolymorphicForwardRefComponent<DefaultAs, OwnProps = {}> extends React.ForwardRefExoticComponent<Merge<DefaultAs extends React.ElementType<any> ? React.ComponentPropsWithRef<DefaultAs> : never, OwnProps & { as?: DefaultAs; }>> { <As = DefaultAs>(props: As extends keyof React.JSX.IntrinsicElements ? Merge<React.JSX.IntrinsicElements[As], OwnProps & { as: As; }> : As extends React.ComponentType<infer P> ? Merge<P, OwnProps & { as: As; }> : never): React.ReactElement<any> | null; } type Merge<P1, P2> = Omit<P1, keyof P2> & P2; /** * Converts the `as` prop used in `@itwin/itwinui-react` components to `render` prop used in Strata components. * * @private */ export declare function useCompatProps<P extends { as?: React.ElementType; }>(props: P): Omit<P, "as"> & { render?: import("react/jsx-runtime").JSX.Element | undefined; }; export {};