From cf2f3a25df9b27986454d84fd965d3cfdf0c2d93 Mon Sep 17 00:00:00 2001
From: Alf Eaton <eaton.alf@gmail.com>
Date: Fri, 27 Oct 2017 09:48:49 +0100
Subject: [PATCH] Add ThemeProvider to Root

fixes #53

This imports `ThemeProvider` from `react-css-themr` and adds it to the client app, using a `theme` parameter that will contain the theme object.
---
 package.json           |  1 +
 src/components/Root.js | 23 +++++++++++------------
 yarn.lock              | 11 +++++++++++
 3 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/package.json b/package.json
index 9cef3bbb7..129f35bf7 100644
--- a/package.json
+++ b/package.json
@@ -29,6 +29,7 @@
     "prop-types": "^15.5.8",
     "pubsweet-component-login": "^0.5.2",
     "react": "^15.4.4",
+    "react-css-themr": "^2.1.2",
     "react-redux": "^5.0.2",
     "react-router-dom": "^4.2.2",
     "react-router-redux": "next",
diff --git a/src/components/Root.js b/src/components/Root.js
index 6392126cb..f40aafc77 100644
--- a/src/components/Root.js
+++ b/src/components/Root.js
@@ -2,22 +2,21 @@ import React from 'react'
 import { ConnectedRouter } from 'react-router-redux'
 import { Provider } from 'react-redux'
 import PropTypes from 'prop-types'
+import { ThemeProvider } from 'react-css-themr'
 
-export default class Root extends React.Component {
-  render() {
-    const { store, history, routes } = this.props
-    return (
-      <Provider store={store}>
-        <div>
-          <ConnectedRouter history={history}>{routes}</ConnectedRouter>
-        </div>
-      </Provider>
-    )
-  }
-}
+const Root = ({ store, history, routes, theme }) => (
+  <Provider store={store}>
+    <ConnectedRouter history={history}>
+      <ThemeProvider theme={theme}>{routes}</ThemeProvider>
+    </ConnectedRouter>
+  </Provider>
+)
 
 Root.propTypes = {
   routes: PropTypes.node.isRequired,
   history: PropTypes.object.isRequired,
   store: PropTypes.object.isRequired,
+  theme: PropTypes.object.isRequired,
 }
+
+export default Root
diff --git a/yarn.lock b/yarn.lock
index fc21a15e7..2860c32ad 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2100,6 +2100,10 @@ hoek@4.x.x:
   version "4.2.0"
   resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d"
 
+hoist-non-react-statics@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb"
+
 hoist-non-react-statics@^2.2.1, hoist-non-react-statics@^2.3.0, hoist-non-react-statics@^2.3.1:
   version "2.3.1"
   resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz#343db84c6018c650778898240135a1420ee22ce0"
@@ -3614,6 +3618,13 @@ react-bootstrap@^0.31.3:
     uncontrollable "^4.1.0"
     warning "^3.0.0"
 
+react-css-themr@^2.1.2:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/react-css-themr/-/react-css-themr-2.1.2.tgz#e017514e471c232f43a754a55b49d81faf5dafb8"
+  dependencies:
+    hoist-non-react-statics "^1.2.0"
+    invariant "^2.2.1"
+
 react-dom@^15.6.1:
   version "15.6.2"
   resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.6.2.tgz#41cfadf693b757faf2708443a1d1fd5a02bef730"
-- 
GitLab