import type { ClassNamed, ClassHash } from "./main.types"; import type { CssModule, ActionsOf, Action, Act4Used } from "./definitions.types"; import type { GetProps } from "./react-swiss.types"; import type { BoolDict, RequiredKeys, AnyObject, Falsy, Ever, OmitIndexed } from "./ts-swiss.types"; export declare type ClassNamingFn = /** * Makes `string`-className from conditioned CSS classes as keys. * Destructed to singleton `{className: string}`, stringifyable object, re-callable with propagation of previously stacked * @example * ```typescript * classes(true); // `${props.className}` * classes({App}); // "App" * classes(true && {App: true, "App--bad": false}); // `${props.className} App` * classes(); // `== classes` * * const btn = classes({btn}) // "btn" * btn(true, {"btn--disabled": true}); // `${props.className} btn btn--disabled` * ``` * @example * ```tsx *
; *
; *
* * ``` */ (arg0?: ApplyClassName | Falsy | StrictSub, arg1?: ApplyClassName extends true ? Falsy | StrictSub : never) => ClassNaming]: K extends keyof Used ? Used[K] : Act4Used & Act4Used; }, Source>; export declare type ClassNaming = ClassNamingFn<{ [K in Exclude>]: Source[K]; }, Used, WithClassName> & ClassNamed; declare type StrictSub> = { [K in keyof Actions]: K extends keyof Source ? K extends keyof Used ? never : Actions[K] extends boolean ? Actions[K] : Actions[K] extends ClassHash ? Ever, Extract extends "" ? never : Actions[K], Actions[K]> : boolean : never; }; export declare type ClassNamesMapping = ( /** Function to map `classnames` to certain properties of target Component * @example * ```tsx * *``` */ >, Source>>(target: Target, map: StrictActions) => Omit<{ [M in keyof Mapping]: string; }, { [M in keyof Mapping]: Mapping[M] extends undefined ? M : never; }[keyof Mapping]>); export declare type ClassNamesMap = Pick<{ [K in keyof TargetProps]?: ClassNaming | { [S in keyof Source]?: Action; }; }, { [T in keyof TargetProps]: string extends TargetProps[T] ? T : never; }[keyof TargetProps]>; declare type StrictActions> = { [T in keyof MapActs]: MapActs[T] extends Record ? { [S in keyof MapActs[T]]: MapActs[T][S] extends boolean ? MapActs[T][S] : MapActs[T][S] extends ClassHash ? Ever, Extract extends "" ? never : MapActs[T][S], MapActs[T][S]> : boolean; } : MapActs[T]; }; export {};