react-redux-provide-theme v0.2.0
react-redux-provide-theme
Provides themes as classes created by JSS to React components.
Installation
npm install react-redux-provide-theme --saveUsage
This provides React components with interchangeable themes and automatically namespaced classNames via the following propTypes:
setTheme (Object theme)- thethemeobject may contain any combination of the following, plus any other properties you deem necessary:stylesobject - each key within this object will be automatically namespaced and added to your app's stylesheet byjss; you can then obtain the namespaced classNames via the reducedclassespropglobalStylesobject - useful when you need to specify global styles; e.g.,body,button, etc.
Your components may also be provided the following reduced props:
theme- contains the entire theme object; nice to have if your app depends on custom properties (e.g., icons, images, boolean values, etc.) within the current themeclasses- the namespaced classNames automatically generated byjss; these classNames are derived from thetheme.stylesobjectsheet- thejsssheet based on yourtheme.styles; you should rarely access this directly, as it's automatically attached/detached when setting the themeglobalSheet- thejsssheet based on yourtheme.globalStyles; you should rarely access this directly, as it's automatically attached/detached when setting the theme
A couple of notes:
Upon initializing the store, if you've supplied a
themewith your provider'sinitialState,setThemeis automatically called which can be used to properly initialize the state of any other providers who make use of this provider'sUSE_THEMEaction type.jssis designed to be extensible via plugins. As a convenience, the following plugins are used by default, mainly to allow your theme's styles to work similarly to React's inline styles:
Example
See bloggur and bloggur-theme-dark.  Protip:  You can include images with your theme's bundle!  It's also good practice to use vector formats (e.g., svg files) where possible.