UNPKG

antd

Version:

An enterprise-class UI design language and React components implementation

33 lines (32 loc) 1.19 kB
type RemoveString<T> = T extends string ? never : T; export type RemoveClassNamesString<T> = { [K in keyof T]: string | Record<string, any> extends T[K] ? RemoveString<T[K]> : T[K]; }; export type DeepClassNameType<T> = { [K in keyof T]?: string extends T[K] ? string | DeepClassNameType<T[K]> : DeepClassNameType<T[K]>; }; type CSS = React.CSSProperties; export type DeepStylesType<T> = { [K in keyof T]?: CSS extends T[K] ? CSS : DeepStylesType<T[K]>; }; export type GenerateSemantic<T extends { classNames?: any; styles?: any; }, Props> = { classNames: DeepClassNameType<T['classNames']>; classNamesNoString: RemoveClassNamesString<DeepClassNameType<T['classNames']>>; classNamesFn: (info: { props: Props; }) => DeepClassNameType<T['classNames']>; classNamesAndFn: DeepClassNameType<T['classNames']> | ((info: { props: Props; }) => DeepClassNameType<T['classNames']>); styles: DeepStylesType<T['styles']>; stylesFn: (info: { props: Props; }) => DeepStylesType<T['styles']>; stylesAndFn: DeepStylesType<T['styles']> | ((info: { props: Props; }) => DeepStylesType<T['styles']>); }; export {};