export type WithoutSharedProperties = 'as' extends keyof C ? Omit : Omit; export type PropsOf = React.ComponentPropsWithRef; interface AsProp { /** * An override of the default HTML tag. * Can also be another React component. */ as?: C; } /** * Allows for extending a set of props (`ExtendedProps`) by an overriding set of props * (`OverrideProps`), ensuring that any duplicates are overridden by the overriding * set of props. */ export type ExtendableProps = OverrideProps & Omit; /** * Allows for inheriting the props from the specified element type so that * props like children, className & style work, as well as element-specific * attributes like aria roles. The component (`C`) must be passed in. */ export type InheritableElementProps = ExtendableProps, Props>; /** * A more sophisticated version of `InheritableElementProps` where * the passed in `as` prop will determine which props can be included */ export type PolymorphicComponentProps = InheritableElementProps>; export type PolymorphicRef = React.ComponentPropsWithRef['ref']; export type PolymorphicComponentPropsWithRef = PolymorphicComponentProps & { ref?: PolymorphicRef; }; export {};