Classnames helper written in ReasonML
open ReCx; /* for "namespace: true" in bsconfig.json */
let cssmodule = Js.Dict.fromList([("foo", "foo_123"), ("bar", "bar_456")]);
let cx = Cx.make(cssmodule);
Js.log(cx([LocalIf("foo", true), LocalIf("bar", false)]));
/* output: foo_123 */
yarn add re-cx
Then add re-cx
to bs-dependencies
in your bsconfig.json
:
{
...
"bs-dependencies": ["re-cx"]
}
Cx.join2(Global("foo"), GlobalIf("bar", false)); /* => "foo" */
This is for css-modules user. Just like classnames' bind version.
let cssmodule = Js.Dict.fromList([("foo", "foo_123"), ("bar", "bar_456")]);
let cx = Cx.make(cssmodule);
cx([Local("foo"), LocalIf("bar", false)]); /* => "foo_123" */
Cx.join(Local("foo")); /* => "foo" */
Cx.join2(Local("foo"), LocalIf("bar", false)); /* => "foo" */
Cx.join3(Local("foo"), LocalIf("bar", false), Local("baz")); /* => "foo baz" */
Cx.join4(Local("foo"), LocalIf("bar", false), Local("baz"), Local("woo")); /* => "foo baz woo" */
Cx.joinMany([Local("foo"), LocalIf("bar", false), Local("baz"), Local("woo")]); /* => "foo baz woo" */
This library is inspired by https://github.com/alexfedoseev/re-classnames