diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/App.jsx b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/App.jsx
index 1d7c315caa..58002cfb62 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/App.jsx
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/App.jsx
@@ -20,6 +20,8 @@ import './App.css';
import React, {Component} from 'react';
import createHistory from 'history/createBrowserHistory';
import {BrowserRouter as Router, Redirect, Route, Switch} from 'react-router-dom'
+import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
+import getMuiTheme from 'material-ui/styles/getMuiTheme';
import {
ApplicationCreate,
ApplicationListing,
@@ -29,9 +31,21 @@ import {
PlatformCreate,
PlatformListing
} from './components';
-
const history = createHistory({basename: '/publisher'});
+/**
+ * User can define the themes in the config.json. The themes will be loaded based on the user preference.
+ */
+const theme = require("./config.json").theme;
+let muiTheme = null;
+if (theme.current === "default") {
+ let defaultTheme = require("material-ui/styles/baseThemes/" + theme.default);
+ muiTheme = getMuiTheme(defaultTheme.default);
+} else {
+ let customTheme = require("./themes/" + theme.custom);
+ muiTheme = getMuiTheme(customTheme.default);
+}
+
/**
* This component defines the layout and the routes for the app.
* All the content will be loaded inside the Base component.
@@ -45,7 +59,6 @@ const history = createHistory({basename: '/publisher'});
* HashRouter is used because the other router types need the server to serve those urls. In hashRouter, server does
* not want to serve the URL.
* */
-
class Base extends Component {
constructor() {
super();
@@ -91,6 +104,7 @@ class Publisher extends Component {
render() {
return (
+
@@ -98,6 +112,7 @@ class Publisher extends Component {
+
);
}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/config.json b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/config.json
new file mode 100644
index 0000000000..cb7ead56b1
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/config.json
@@ -0,0 +1,7 @@
+{
+ "theme" : {
+ "current" : "default",
+ "default" : "lightBaseTheme",
+ "custom" : "custom-theme"
+ }
+}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/index.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/index.js
index e94b572737..025a12afbe 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/index.js
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/index.js
@@ -21,10 +21,9 @@ import React from 'react';
import Publisher from './App';
import ReactDOM from 'react-dom';
import registerServiceWorker from './registerServiceWorker';
-import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
/**
* This is the base js file of the app. All the content will be rendered in the root element.
* */
-ReactDOM.render(, document.getElementById('root'));
+ReactDOM.render(, document.getElementById('root'));
registerServiceWorker();
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/themes/custom-theme.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/themes/custom-theme.js
new file mode 100644
index 0000000000..8342d4da36
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/themes/custom-theme.js
@@ -0,0 +1,12 @@
+import {
+ indigo500, indigo700, redA200,
+} from 'material-ui/styles/colors';
+
+export default {
+ palette: {
+ primary1Color: indigo500,
+ primary2Color: indigo700,
+ accent1Color: redA200,
+ pickerHeaderColor: indigo500,
+ },
+};