UNPKG

@ionic-internal/ionic-ds

Version:
23 lines (22 loc) 1.49 kB
import * as React from 'react'; export declare type ExtendableProps<ExtendedProps = {}, OverrideProps = {}> = OverrideProps & Omit<ExtendedProps, keyof OverrideProps>; export declare type As<Props = any> = React.ElementType<Props>; /** * Extract the props of a React element or component */ export declare type PropsOf<T extends As> = React.ComponentPropsWithoutRef<T> & { as?: As; }; export declare type OmitCommonProps<Target, OmitAdditionalProps extends keyof any = never> = Omit<Target, 'transition' | 'as' | 'color' | OmitAdditionalProps>; export declare type RightJoinProps<SourceProps extends object = {}, OverrideProps extends object = {}> = OmitCommonProps<SourceProps, keyof OverrideProps> & OverrideProps; export declare type MergeWithAs<ComponentProps extends object, AsProps extends object, AdditionalProps extends object = {}, AsComponent extends As = As> = RightJoinProps<ComponentProps, AdditionalProps> & RightJoinProps<AsProps, AdditionalProps> & { as?: AsComponent; }; export declare type ComponentWithAs<Component extends As, Props extends object = {}> = { <AsComponent extends As>(props: MergeWithAs<React.ComponentProps<Component>, React.ComponentProps<AsComponent>, Props, AsComponent>): JSX.Element; }; export interface DSComponent<T extends As, P = {}> extends ComponentWithAs<T, {} & P> { } export declare type HTMLDSProps<T extends As> = Omit<PropsOf<T>, T extends 'svg' ? 'ref' | 'children' : 'ref'> & {} & { as?: As; };