typed-bem
Version:
A TypeScript library for generating BEM class names.
20 lines (16 loc) • 2.71 kB
TypeScript
import { B as BemBlocks, a as BemSchema } from './shared/typed-bem.DsSxeKVt.js';
type KeysOfSet<T> = T extends Set<infer U> ? U : never;
declare function generateBemClassNames<B extends BemBlocks<BemSchema>>(): {
<BlockName extends keyof B, ElementName extends keyof NonNullable<B[BlockName]["elements"]>>(blockName: BlockName, blockModifiersOrElementName?: (KeysOfSet<B[BlockName]["modifiers"]> extends never ? undefined : Partial<Record<KeysOfSet<B[BlockName]["modifiers"]>, boolean>>) | ElementName, elementModifiers?: KeysOfSet<NonNullable<B[BlockName]["elements"]>[ElementName]["modifiers"]> extends never ? undefined : Partial<Record<KeysOfSet<NonNullable<B[BlockName]["elements"]>[ElementName]["modifiers"]>, boolean>>): string;
forBlock<BlockName extends keyof B>(blockName: BlockName): {
<ElementName extends keyof NonNullable<B[BlockName]["elements"]>>(elementNameOrBlockModifiers?: ElementName | (KeysOfSet<B[BlockName]["modifiers"]> extends never ? undefined : Partial<Record<KeysOfSet<B[BlockName]["modifiers"]>, boolean>>), elementModifiers?: KeysOfSet<NonNullable<B[BlockName]["elements"]>[ElementName]["modifiers"]> extends never ? undefined : Partial<Record<KeysOfSet<NonNullable<B[BlockName]["elements"]>[ElementName]["modifiers"]>, boolean>>): string;
forElement: <ElementName extends keyof NonNullable<B[BlockName]["elements"]>>(elementName: ElementName) => (elementModifiers?: KeysOfSet<NonNullable<B[BlockName]["elements"]>[ElementName]["modifiers"]> extends never ? undefined : Partial<Record<KeysOfSet<NonNullable<B[BlockName]["elements"]>[ElementName]["modifiers"]>, boolean>>) => string;
};
} & {
forBlock: <BlockName extends keyof B>(blockName: BlockName) => {
<ElementName extends keyof NonNullable<B[BlockName]["elements"]>>(elementNameOrBlockModifiers?: ElementName | (KeysOfSet<B[BlockName]["modifiers"]> extends never ? undefined : Partial<Record<KeysOfSet<B[BlockName]["modifiers"]>, boolean>>), elementModifiers?: KeysOfSet<NonNullable<B[BlockName]["elements"]>[ElementName]["modifiers"]> extends never ? undefined : Partial<Record<KeysOfSet<NonNullable<B[BlockName]["elements"]>[ElementName]["modifiers"]>, boolean>>): string;
forElement: <ElementName extends keyof NonNullable<B[BlockName]["elements"]>>(elementName: ElementName) => (elementModifiers?: KeysOfSet<NonNullable<B[BlockName]["elements"]>[ElementName]["modifiers"]> extends never ? undefined : Partial<Record<KeysOfSet<NonNullable<B[BlockName]["elements"]>[ElementName]["modifiers"]>, boolean>>) => string;
};
};
declare function uniqueClassNames(...chunks: (string | undefined | null | false)[]): string;
export { generateBemClassNames, uniqueClassNames };