UNPKG

zilly-ui

Version:

Zilly web react ui components

58 lines (46 loc) 1.73 kB
/** @format */ import { StyledComponentProps } from "@material-ui/styles/withStyles"; export type Omit<T, K extends keyof any> = T extends any ? Pick<T, Exclude<keyof T, K>> : never; export interface CommonStylePropTypes { [propName: string]: any; } export type StandardProps< C, ClassKey extends string, Removals extends keyof C = never, AcceptsRef = true > = Omit<C, "classes" | Removals> & StyledComponentProps<ClassKey> & { className?: string; style?: React.CSSProperties; } & { ref?: AcceptsRef extends true ? C extends { ref?: infer RefType } ? RefType : React.Ref<unknown> : never; }; export { StyledComponentProps }; export interface OverridableTypeMap { props: {}; defaultComponent: React.ElementType; classKey: string; } export interface CommonProps<M extends OverridableTypeMap> extends StyledComponentProps<M["classKey"]> { className?: string; style?: React.CSSProperties; } export type BaseProps<M extends OverridableTypeMap> = M["props"] & CommonProps<M>; export type DefaultComponentProps<M extends OverridableTypeMap> = BaseProps<M> & Omit<React.ComponentPropsWithRef<M["defaultComponent"]>, keyof BaseProps<M>>; export type OverrideProps<M extends OverridableTypeMap, C extends React.ElementType> = BaseProps< M > & Omit<React.ComponentPropsWithRef<C>, keyof CommonProps<M>>; export interface OverridableComponent<M extends OverridableTypeMap> { <C extends React.ElementType>(props: { component: C } & OverrideProps<M, C>): JSX.Element; (props: DefaultComponentProps<M>): JSX.Element; } export type Simplify<T> = T extends any ? { [K in keyof T]: T[K] } : never; export type SimplifiedPropsOf<C extends React.ElementType> = Simplify<React.ComponentProps<C>>;