Reduces mixed-type arguments into a single HTML class attribute. A replica of classnames made for fun.
Install via npm:
npm install @ekim088/classnamesor yarn:
yarn add @ekim088/classnamesThis package ships both ESM and CommonJS builds.
Reduces a list of mixed-type arguments into a single class attribute value.
import classNames from '@ekim088/classnames';
classNames('foo', { bar: true }); // 'foo bar'Two variants are available as subpath imports:
@ekim088/classnames/dedupe- removes duplicate class names (less performant).@ekim088/classnames/cached- caches derived class names by object reference.
Run with Benchmark.js:
@ekim088/classnames x 4,101,263 ops/sec ±2.61% (91 runs sampled)
classnames x 4,234,935 ops/sec ±2.70% (88 runs sampled)
@ekim088/classnames/dedupe x 1,490,623 ops/sec ±2.90% (79 runs sampled)
classnames/dedupe x 1,292,126 ops/sec ±3.80% (87 runs sampled)
@ekim088/classnames/cached x 7,323,099 ops/sec ±1.35% (89 runs sampled)