UNPKG

typed-bem

Version:

A TypeScript library for generating BEM class names.

20 lines (16 loc) 2.71 kB
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 };