import type { CssModule } from "./definitions.types"; import type { Strip, Cut, NoSubString, PartDeep, Extends, KeyOf, Ever } from "./ts-swiss.types"; import type { ClassNamed } from "./main.types"; export declare type ClassBeming = /** * Makes `string`-className from conditioned BEM query based on supplied CSS classes. * Destructed to singleton `{className: string}`, stringifyable object * @returns * @example * ```typescript * bem(true) // `${props.className}` * bem({button: true}) // "button" * bem({button: "raised"}) // "button button--raised" * bem({button: false && "raised"}) // "button" * bem({button: {type: "raised"}}) // "button button--type--raised" * * bem(true, { * "material-icons": undefined, * ripple: "background-focused", * button__icon: {size: "big"} * }) // `${props.className} material-icons ripple ripple--background-focused button__icon button__icon--size--big` * ``` * @example * ```typescript *
; *
* ``` */ (arg0?: Q1 extends true ? Q1 : BemQuery, arg1?: Q1 extends undefined | boolean ? BemQuery : never) => ClassNamed; export declare type BemQuery = string extends classes ? BemInGeneral : PartDeep<{ [base in Strip | Strip, delE>]: true | (Extends, delM>, { [m in Strip, delM, true>]: classes extends `${base}${delM}${m}${delM}${infer V}` ? V : never; }>>); }>; export declare type Mods> = false | Ever | { [m in Bools | KeyOf]?: false | (m extends Bools ? true : never) | (m extends KeyOf ? Enums[m] : never); }; export declare type BemInGeneral = { [base: string]: undefined | boolean | string | (false | string)[] | { [mod: string]: undefined | boolean | string; }; };