Theming wrapper for React UI libs
npm install --save @nkbt/themr
<script src="https://unpkg.com/react/umd/react.production.min.js"></script>
<script src="https://unpkg.com/@nkbt/themr@1.0.0/build/@nkbt/themr.min.js"></script>
(Module exposed as `themr`)
http://codepen.io/nkbt/pen/VxrYKq
import {themr} from 'themr';
import css from './TextWithIcon.css';
/*
const css = {
container: 'TextWithIcon-container',
icon: 'TextWithIcon-icon',
text: 'TextWithIcon-text',
}
*/
const TextWithIcon = ({icon, theme, ...props}) => (
<div className={theme.container}>
<span className={theme.icon} />
<span className={theme.text} {...props} />
</div>
);
TextWithIcon.propTypes = {
theme: PropTypes.object.isRequired
};
export default themr(css, {override: false})(TextWithIcon);
import TextWithIcon from './TextWithIcon';
import css from './Themed.css';
/*
const css = {
text: 'Themed-text',
}
*/
const Themed = () =>
<TextWithIcon theme={css}>Test</TextWithIcon>;
<div class="TextWithIcon-container">
<span class="TextWithIcon-icon"></span>
<span class="TextWithIcon-text Themed-text">Test</span>
<!-- ^^^ added class -->
<!-- if {override: true} option was used-->
</div>
if {override: true}
option was used
<div class="TextWithIcon-container">
<span class="TextWithIcon-icon"></span>
<span class="Themed-text">Test</span>
<!-- ^^^ overridden class -->
</div>
Currently is being developed and tested with the latest stable Node
on OSX
.
To run example covering all ReactComponentRouter
features, use yarn start
, which will compile example/index.js
git clone git@github.com:nkbt/themr.git
cd themr
yarn install
yarn start
# then
open http://localhost:8080
# to run ESLint check
yarn lint
# to run tests
yarn test
# to run end-to-end tests
# first, run `selenium/standalone-firefox:3.4.0` docker image
docker run -p 4444:4444 selenium/standalone-firefox:3.4.0
# then run test
yarn e2e
MIT