import type { Ever, EmptyObject } from "./ts-swiss.types"; import type { GetProps } from "./react-swiss.types"; import type { ClassNamesCombiner, ReactRelated, GetClassNames, CssModule, ClassHash } from "./definitions.types"; export type { ClassHash } from "./definitions.types"; /** Collects required `classnames` from used sub-Components * @example * ```typescript * type Props = ClassNames // {className: string} * type Props = ClassNames // {classnames: Props["classnames"]} * type Props = ClassNames * type Props = ClassNames * ``` */ export declare type ClassNames = Ever, ClassNamed> & ClassNamesCombiner, ClassNamesFrom>> & Ever> & Ever> & Ever> & Ever> & Ever> & Ever> & Ever> & Ever> & Ever> & Ever>>; /** Declaration of self Component's `classnames` * @example * ```typescript * type MyClasses = ClassNamesProperty<{ * class1: ClassHash * class2: ClassHash * }> * * type MyProps = ClassNamesProperty< * typeof some_module_css, * {class1: ClassHash, class2: ClassHash} * > * ``` */ export declare type ClassNamesProperty]: never; } = C & EmptyObject> = { classnames: { [K in keyof T & keyof C]: ClassHash; }; }; /** Shortcut to require property `className` */ export declare type ClassNamed = { className: string; }; /** * Obtain `classnames`-object from `props` of functional component, class component or props type * @example * ```typescript * ClassNamesFrom; * ClassNamesFrom; * ``` */ export declare type ClassNamesFrom = GetClassNames, EmptyObject, EmptyObject>; /** * @example * ```typescript * const {primitive, array, object} = {} as Undefined<{ * primitive: any * array: any[] * object: {} * }> * ``` */ export declare type Undefineds = { [K in keyof M]: undefined; };