Détail du package

@bem-react/classname

bem90.8kMPL-2.01.7.0

BEM React ClassName

bem, naming, classes, notation

readme

@bem-react/classname · npm (scoped) npm bundle size (minified + gzip)

Tiny helper for building CSS classes with BEM methodology.

Install

npm i -S @bem-react/classname

Usage

import { cn } from '@bem-react/classname'

const cat = cn('Cat')

cat() // Cat
cat({ size: 'm' }) // Cat Cat_size_m
cat('Tail') // Cat-Tail
cat('Tail', { length: 'small' }) // Cat-Tail Cat-Tail_length_small

const dogPaw = cn('Dog', 'Paw')

dogPaw() // Dog-Paw
dogPaw({ color: 'black', exists: true }) // Dog-Paw Dog-Paw_color_black Dog-Paw_exists

// mixes

cat(null, ['Dog']) // Cat Dog
cat({ size: 'm' }, ['Dog', 'Horse']) // Cat Cat_size_m Dog Horse

cat('Tail', [dogPaw()]) // Cat-Tail Dog-Paw
cat('Tail', { length: 'small' }, [dogPaw({ color: 'black' })]) // Cat-Tail Cat-Tail_length_small Dog-Paw Dog-Paw_color_black

Configure

By default classname uses React naming preset. But it's possible to use any.

import { withNaming } from '@bem-react/classname'

const cn = withNaming({ n: 'ns-', e: '__', m: '_', v: '_' })

cn('block', 'elem')({ theme: 'default' }) // ns-block__elem_theme_default

changelog

Change Log

All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

1.7.0 (2025-06-15)

Features

1.6.0 (2023-04-04)

Features

  • allow mix to be a string (c1c9731)

1.5.12 (2021-09-03)

Bug Fixes

  • classname: add correct overloads for cn formatter (47758e7)

1.5.11 (2021-06-08)

Bug Fixes

1.5.10 (2021-04-29)

Bug Fixes

  • classname: formatter type (04e8b5c)

1.5.9 (2021-02-11)

Bug Fixes

  • classname: support mix via valueOf method (243575c)

1.5.8 (2020-03-12)

Note: Version bump only for package @bem-react/classname

1.5.7 (2020-03-02)

Note: Version bump only for package @bem-react/classname

1.5.6 (2019-10-02)

Note: Version bump only for package @bem-react/classname

1.5.5 (2019-10-02)

Note: Version bump only for package @bem-react/classname

1.5.4 (2019-08-20)

Note: Version bump only for package @bem-react/classname

1.5.3 (2019-07-31)

Bug Fixes

  • classname: mix as not string type (9648499)

1.5.2 (2019-05-27)

Note: Version bump only for package @bem-react/classname

1.5.1 (2019-05-24)

Note: Version bump only for package @bem-react/classname

1.5.0 (2019-04-22)

Features

  • classname: add modVal delimiter for withNaming configuration (5fb63dc)

1.4.4 (2019-03-01)

Note: Version bump only for package @bem-react/classname

1.4.3 (2019-01-17)

Bug Fixes

  • classname: filter class name duplicates with mods (1cfb22c)

1.4.2 (2019-01-17)

Bug Fixes

  • classname: filter class name duplicates (e92cbab)

1.4.1 (2018-12-28)

Note: Version bump only for package @bem-react/classname

1.4.0 (2018-12-21)

Bug Fixes

  • classname with undefined (9232c61)
  • fix filename (3dbdcdd)
  • classname: remove undefined modifiers (c3af486)
  • classname: remove whitespace after mix (5e423e7)
  • classname: use set for unique class list (9a708b1)

Features

  • classname: array type for mix (9513c26)
  • classname: carry elems (a943509)
  • classname: decrease bundle size, classnames pkg (c5fb74f)
  • v3: init packages (c70a97d)
  • v3: init packages (d652328)

1.3.2 (2018-12-21)

Bug Fixes

  • classname with undefined (9232c61)
  • fix filename (3dbdcdd)
  • classname: remove undefined modifiers (6a595d9)
  • classname: remove whitespace after mix (2a9f8f0)
  • classname: use set for unique class list (9a708b1)

Features

  • classname: array type for mix (9513c26)
  • classname: carry elems (a943509)
  • classname: decrease bundle size, classnames pkg (c5fb74f)
  • v3: init packages (c70a97d)
  • v3: init packages (d652328)

1.3.1 (2018-12-19)

Bug Fixes

  • classname: use set for unique class list (9a708b1)
  • classname with undefined (9232c61)
  • fix filename (3dbdcdd)

Features

  • classname: array type for mix (9513c26)
  • classname: carry elems (a943509)
  • classname: decrease bundle size, classnames pkg (c5fb74f)
  • v3: init packages (c70a97d)
  • v3: init packages (d652328)

1.3.0 (2018-12-18)

Bug Fixes

  • classname: use set for unique class list (9a708b1)
  • classname with undefined (9232c61)
  • fix filename (3dbdcdd)

Features

  • classname: array type for mix (9513c26)
  • classname: carry elems (a943509)
  • classname: decrease bundle size, classnames pkg (c5fb74f)
  • v3: init packages (c70a97d)
  • v3: init packages (d652328)

1.2.0 (2018-12-06)

Bug Fixes

  • classname: use set for unique class list (9a708b1)
  • classname with undefined (9232c61)
  • fix filename (3dbdcdd)

Features

  • classname: array type for mix (9513c26)
  • classname: carry elems (a943509)
  • classname: decrease bundle size, classnames pkg (c5fb74f)
  • v3: init packages (c70a97d)
  • v3: init packages (d652328)

1.1.1 (2018-10-24)

Bug Fixes

  • classname: use set for unique class list (6f4aa5f)
  • classname with undefined (5f0e907)

1.1.0 (2018-10-02)

Features

  • classname: array type for mix (dd985e8)

1.0.0 (2018-09-20)

Note: Version bump only for package @bem-react/classname

0.3.2 (2018-09-04)

Note: Version bump only for package @bem-react/classname

0.3.1 (2018-08-30)

Note: Version bump only for package @bem-react/classname

0.3.0 (2018-08-30)

Features

0.2.2 (2018-08-30)

Note: Version bump only for package @bem-react/classname

0.2.1 (2018-08-29)

Note: Version bump only for package @bem-react/classname

0.2.0 (2018-08-29)

Bug Fixes

Features

0.1.0 (2018-08-29)

Bug Fixes

Features