react-classname-module
v0.1.1
Published
Write CSS Modules painless with className and classnames()
Downloads
16
Readme
React Classname Module
React Classname Module allows you to write your classnames for CSS Modules as easy as without CSS Modules. It's build with classnames, so you have a simple and powerful way to write your classnames.
Notice: This is currently in an early alpha stage
Install
npm install --save react-classname-module
How?
See this example. Yuck, it sucks!
import React from "react";
import styles from "styles.css";
class MyComponent extends React.Component {
render() {
return (
<div className={styles.head}>
<h1 className={styles["headline--h1"]}>Lorem ipsum</h1>
<div className={styles.content}>
...
</div>
</div>
);
}
}
export default MyComponent;
With React Classname Module you can simply write this nice little piece of code:
import React from "react";
import cm from "react-classname-module";
import styles from "styles.css";
class MyComponent extends React.Component {
render() {
return (
<div className="head">
<h1 className="headline--h1">Lorem ipsum</h1>
<div className="content">
...
</div>
</div>
);
}
}
export default cm(MyComponent, styles);
And that's it.
Features
- Supports local and global classnames
- Works with stateless Components
- Works with multiple classes:
className="btn btn-highlight"
- Works with classnames
Doesn't support (currently)
- identical local and global classnames
- merging
className
on a React Component:
e.g.<Foo className="bar" />
will override the Components className with the CSS Module"bar"
Supporting classnames
Instead of writing a string into classname, you can pass a typical classnames object into it.
let classnames = {
foo: true,
bar: true,
"foo-bar": false
}
<div className={classnames}></div>
Changelog
v0.1.1
- Fixed missing
defaultProps
andpropTypes
in stateless Components
v0.1.0
- Removed silly dead code
- Support for stateless components
v0.0.1
- initial version