UNPKG

antd

Version:

An enterprise-class UI design language and React components implementation

32 lines (31 loc) 2.18 kB
import * as React from 'react'; import type { AnyObject, EmptyObject, ValidChar } from '../type'; export type SemanticSchema = { _default?: string; } & { [key: `${ValidChar}${string}`]: SemanticSchema; }; export type SemanticClassNames<Name extends string> = Partial<Record<Name, string>>; export type SemanticStyles<Name extends string> = Partial<Record<Name, React.CSSProperties>>; export type Resolvable<T, P extends AnyObject> = T | ((info: { props: P; }) => T); export type SemanticClassNamesType<Props extends AnyObject, SemanticName extends string, NestedStructure extends EmptyObject = EmptyObject> = Resolvable<Readonly<SemanticClassNames<SemanticName>>, Props> & NestedStructure; export type SemanticStylesType<Props extends AnyObject, SemanticName extends string, NestedStructure extends EmptyObject = EmptyObject> = Resolvable<Readonly<SemanticStyles<SemanticName>>, Props> & NestedStructure; export declare const mergeClassNames: <Name extends string, SemanticClassNames extends Partial<Record<Name, any>>>(schema?: SemanticSchema, ...classNames: (SemanticClassNames | undefined)[]) => SemanticClassNames; export declare const mergeStyles: <StylesType extends AnyObject>(...styles: (Partial<StylesType> | undefined)[]) => Record<PropertyKey, React.CSSProperties>; export declare const resolveStyleOrClass: <T extends AnyObject>(value: T | ((config: any) => T), info: { props: AnyObject; }) => T; type MaybeFn<T, P> = T | ((info: { props: P; }) => T) | undefined; type ObjectOnly<T> = T extends (...args: any) => any ? never : T; /** * @desc Merge classNames and styles from multiple sources. When `schema` is provided, it **must** provide the nest object structure. * @descZH 合并来自多个来源的 classNames 和 styles,当提供了 `schema` 时,必须提供嵌套的对象结构。 */ export declare const useMergeSemantic: <ClassNamesType extends AnyObject, StylesType extends AnyObject, Props extends AnyObject>(classNamesList: MaybeFn<ClassNamesType, Props>[], stylesList: MaybeFn<StylesType, Props>[], info: { props: Props; }, schema?: SemanticSchema) => readonly [ObjectOnly<ClassNamesType>, ObjectOnly<StylesType>]; export {};