Skip to content
/ bem Public

Functions for using BEM naming conventions in CSS and CSS Modules and applying them seamlessly in JavaScript.

License

Notifications You must be signed in to change notification settings

jahed/bem

Repository files navigation

@jahed/bem

npm author

Functions for using BEM in CSS and CSS Modules.

Installation

# NPM
npm install @jahed/bem

# Yarn
yarn add @jahed/bem

Usage

import { bem } from '@jahed/bem'

const className = bem('MyElement', {
  color: 'red',
  active: true,
  disabled: false
})

console.log(className)
// .MyElement .MyElement--color--red .MyElement--active

CSS Modules

The example below assumes you've configured CSS Modules to render classes with a -hash suffix.

import { bemModule } from '@jahed/bem'
import styles from 'styles.module.css'

const bem = bemModule(styles)

const className = bem('MyElement', {
  color: 'red',
  active: true,
  disabled: false
})

console.log(className)
// .MyElement-hash .MyElement-hash--color--red .MyElement-hash--active

For more thorough examples, see the tests and blog posts linked above.

API

For complete API documentation, see the documentation website.

bem(block: string, modifiers: object<string, (boolean|number|string)?>): string

Generates BEM-compliant class names for the given block (or element) with modifiers.

Examples


bemModule(cssModuleLocals): bem

Generates a bem-compliant function which maps the resulting class names to the given cssModuleLocals map.

Examples


join(...string): string

Joins the given strings with a whitespace ( ), filtering any falsy values (such as undefined, null, false, '').

Examples


License

MIT

About

Functions for using BEM naming conventions in CSS and CSS Modules and applying them seamlessly in JavaScript.

Topics

Resources

License

Stars

Watchers

Forks