couchdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gar...@apache.org
Subject [couchdb-fauxton] 01/02: upgrade proptypes
Date Wed, 04 Oct 2017 16:49:44 GMT
This is an automated email from the ASF dual-hosted git repository.

garren pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/couchdb-fauxton.git

commit 84db555c73fe21203993c985e72d954cb68e11ff
Author: Garren Smith <garren.smith@gmail.com>
AuthorDate: Tue Oct 3 12:27:04 2017 +0200

    upgrade proptypes
---
 app/addons/auth/components/createadminform.js      |  4 +-
 app/addons/auth/components/loginform.js            |  4 +-
 app/addons/auth/components/passwordmodal.js        | 16 +++---
 app/addons/components/components/badge.js          | 10 ++--
 app/addons/components/components/bulkaction.js     | 14 ++---
 app/addons/components/components/confirmbutton.js  | 18 ++++---
 app/addons/components/components/copy.js           | 12 +++--
 .../components/components/deletedatabasemodal.js   |  6 ++-
 app/addons/components/components/document.js       | 10 ++--
 app/addons/components/components/polling.js        | 18 ++++---
 .../components/components/stringeditmodal.js       | 10 ++--
 app/addons/components/components/styledselect.js   |  8 +--
 app/addons/components/components/tabelement.js     | 10 ++--
 .../components/components/tabwindowwrapper.js      |  7 +--
 app/addons/components/components/tray.js           | 10 ++--
 app/addons/components/header-breadcrumbs.js        |  4 +-
 app/addons/components/layouts.js                   |  8 +--
 app/addons/config/components.js                    | 10 ++--
 app/addons/cors/components/OriginInput.js          |  7 +--
 app/addons/cors/components/OriginRow.js            |  9 ++--
 app/addons/cors/components/OriginTable.js          | 11 ++--
 app/addons/cors/components/Origins.js              |  9 ++--
 app/addons/databases/components.js                 | 15 +++---
 app/addons/documents/changes/components.js         | 15 +++---
 .../documents/components/header-docs-right.js      | 12 +++--
 app/addons/documents/components/jumptodoc.js       | 11 ++--
 app/addons/documents/components/results-toolbar.js | 18 ++++---
 app/addons/documents/doc-editor/components.js      | 29 ++++++-----
 .../index-editor/components/DesignDocSelector.js   | 16 +++---
 .../components/pagination/PagingControls.js        | 12 +++--
 .../components/pagination/PerPageSelector.js       | 12 +++--
 .../components/pagination/TableControls.js         | 10 ++--
 .../components/queryoptions/MainFieldsView.js      | 16 +++---
 .../components/queryoptions/QueryButtons.js        |  6 ++-
 .../components/queryoptions/QueryOptions.js        | 24 +++++----
 .../components/results/IndexResults.js             |  6 ++-
 .../components/results/NoResultsScreen.js          |  6 ++-
 .../index-results/components/results/TableRow.js   | 16 +++---
 .../index-results/containers/ApiBarContainer.js    | 14 ++---
 .../containers/IndexResultsContainer.js            |  6 +--
 .../containers/PaginationContainer.js              |  4 +-
 .../containers/QueryOptionsContainer.js            |  4 +-
 app/addons/documents/layouts.js                    | 38 +++++++-------
 .../documents/mango/components/ExplainPage.js      |  4 +-
 .../documents/mango/components/MangoIndexEditor.js |  8 +--
 .../documents/mango/components/MangoQueryEditor.js | 16 +++---
 .../rev-browser/rev-browser.components.js          | 31 +++++++-----
 app/addons/documents/sidebar/sidebar.js            | 59 ++++++++++++----------
 app/addons/fauxton/components.js                   | 17 ++++---
 app/addons/fauxton/navigation/components/Brand.js  |  4 +-
 app/addons/fauxton/navigation/components/Burger.js |  6 ++-
 app/addons/fauxton/navigation/components/Footer.js |  4 +-
 .../fauxton/navigation/components/LoginButton.js   |  4 +-
 .../fauxton/navigation/components/LogoutButton.js  |  6 ++-
 app/addons/fauxton/navigation/components/NavBar.js | 22 ++++----
 .../fauxton/navigation/components/NavLink.js       |  8 +--
 app/addons/fauxton/notifications/notifications.js  | 28 +++++-----
 app/addons/permissions/components/Permissions.js   | 16 +++---
 .../permissions/components/PermissionsItem.js      |  6 ++-
 .../permissions/components/PermissionsScreen.js    |  9 ++--
 app/addons/replication/components/activity.js      | 22 ++++----
 .../replication/components/common-activity.js      | 10 ++--
 app/addons/replication/components/common-table.js  | 56 ++++++++++----------
 app/addons/replication/components/modals.js        | 28 +++++-----
 app/addons/replication/components/options.js       | 18 ++++---
 .../replication/components/replicate-activity.js   | 22 ++++----
 app/addons/replication/components/source.js        | 40 ++++++++-------
 app/addons/replication/components/submit.js        |  8 +--
 app/addons/replication/components/target.js        | 46 +++++++++--------
 app/addons/verifyinstall/components.js             |  8 +--
 70 files changed, 574 insertions(+), 437 deletions(-)

diff --git a/app/addons/auth/components/createadminform.js b/app/addons/auth/components/createadminform.js
index 2a2847d..7229256 100644
--- a/app/addons/auth/components/createadminform.js
+++ b/app/addons/auth/components/createadminform.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 import {
@@ -102,7 +104,7 @@ export class CreateAdminForm extends React.Component {
 }
 
 CreateAdminForm.propTypes = {
-  loginAfter: React.PropTypes.bool.isRequired
+  loginAfter: PropTypes.bool.isRequired
 };
 
 CreateAdminForm.defaultProps = {
diff --git a/app/addons/auth/components/loginform.js b/app/addons/auth/components/loginform.js
index e72705a..528d173 100644
--- a/app/addons/auth/components/loginform.js
+++ b/app/addons/auth/components/loginform.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 import { login } from "./../actions";
@@ -102,7 +104,7 @@ LoginForm.defaultProps = {
 };
 
 LoginForm.propTypes = {
-  urlBack: React.PropTypes.string.isRequired
+  urlBack: PropTypes.string.isRequired
 };
 
 export default LoginForm;
diff --git a/app/addons/auth/components/passwordmodal.js b/app/addons/auth/components/passwordmodal.js
index 6b7ea13..b652c66 100644
--- a/app/addons/auth/components/passwordmodal.js
+++ b/app/addons/auth/components/passwordmodal.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from "react";
 import { Modal } from "react-bootstrap";
 import { hidePasswordModal, authenticate } from "./../actions";
@@ -84,14 +86,14 @@ class PasswordModal extends React.Component {
 }
 
 PasswordModal.propTypes = {
-  visible: React.PropTypes.bool.isRequired,
-  modalMessage: React.PropTypes.oneOfType([
-    React.PropTypes.string,
-    React.PropTypes.element
+  visible: PropTypes.bool.isRequired,
+  modalMessage: PropTypes.oneOfType([
+    PropTypes.string,
+    PropTypes.element
   ]),
-  onSubmit: React.PropTypes.func.isRequired,
-  onClose: React.PropTypes.func.isRequired,
-  submitBtnLabel: React.PropTypes.string
+  onSubmit: PropTypes.func.isRequired,
+  onClose: PropTypes.func.isRequired,
+  submitBtnLabel: PropTypes.string
 };
 
 PasswordModal.defaultProps = {
diff --git a/app/addons/components/components/badge.js b/app/addons/components/components/badge.js
index 29b2599..356d0fb 100644
--- a/app/addons/components/components/badge.js
+++ b/app/addons/components/components/badge.js
@@ -10,14 +10,16 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 
 export const BadgeList = React.createClass({
 
   propTypes: {
-    elements: React.PropTypes.array.isRequired,
-    removeBadge: React.PropTypes.func.isRequired
+    elements: PropTypes.array.isRequired,
+    removeBadge: PropTypes.func.isRequired
   },
 
   getDefaultProps () {
@@ -57,8 +59,8 @@ export const BadgeList = React.createClass({
 
 export const Badge = React.createClass({
   propTypes: {
-    label: React.PropTypes.string.isRequired,
-    remove: React.PropTypes.func.isRequired
+    label: PropTypes.string.isRequired,
+    remove: PropTypes.func.isRequired
   },
 
   remove (e) {
diff --git a/app/addons/components/components/bulkaction.js b/app/addons/components/components/bulkaction.js
index d16e072..6c2ea8a 100644
--- a/app/addons/components/components/bulkaction.js
+++ b/app/addons/components/components/bulkaction.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 import {OverlayTrigger, Popover} from "react-bootstrap";
@@ -17,12 +19,12 @@ import {OverlayTrigger, Popover} from "react-bootstrap";
 export const BulkActionComponent = React.createClass({
 
   propTypes: {
-    hasSelectedItem: React.PropTypes.bool.isRequired,
-    removeItem: React.PropTypes.func.isRequired,
-    selectAll: React.PropTypes.func,
-    toggleSelect: React.PropTypes.func.isRequired,
-    isChecked: React.PropTypes.bool.isRequired,
-    disabled: React.PropTypes.bool
+    hasSelectedItem: PropTypes.bool.isRequired,
+    removeItem: PropTypes.func.isRequired,
+    selectAll: PropTypes.func,
+    toggleSelect: PropTypes.func.isRequired,
+    isChecked: PropTypes.bool.isRequired,
+    disabled: PropTypes.bool
   },
 
   getDefaultProps () {
diff --git a/app/addons/components/components/confirmbutton.js b/app/addons/components/components/confirmbutton.js
index c7915b6..29538e6 100644
--- a/app/addons/components/components/confirmbutton.js
+++ b/app/addons/components/components/confirmbutton.js
@@ -10,19 +10,21 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 
 export const ConfirmButton = React.createClass({
   propTypes: {
-    showIcon: React.PropTypes.bool,
-    id: React.PropTypes.string,
-    customIcon: React.PropTypes.string,
-    style: React.PropTypes.object,
-    buttonType: React.PropTypes.string,
-    'data-id': React.PropTypes.string,
-    onClick: React.PropTypes.func,
-    disabled: React.PropTypes.bool,
+    showIcon: PropTypes.bool,
+    id: PropTypes.string,
+    customIcon: PropTypes.string,
+    style: PropTypes.object,
+    buttonType: PropTypes.string,
+    'data-id': PropTypes.string,
+    onClick: PropTypes.func,
+    disabled: PropTypes.bool,
   },
 
   getDefaultProps () {
diff --git a/app/addons/components/components/copy.js b/app/addons/components/components/copy.js
index 1bf3519..49cc252 100644
--- a/app/addons/components/components/copy.js
+++ b/app/addons/components/components/copy.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import ReactDOM from 'react-dom';
 import Clipboard from 'clipboard';
@@ -83,7 +85,7 @@ export class Copy extends React.Component {
       this.getClipboardButton()
     );
   }
-};
+}
 
 Copy.defaultProps = {
   displayType: 'icon',
@@ -93,8 +95,8 @@ Copy.defaultProps = {
 };
 
 Copy.propTypes = {
-  text: React.PropTypes.string.isRequired,
-  displayType: React.PropTypes.oneOf(['icon', 'text', 'input']),
-  uniqueKey: React.PropTypes.string.isRequired,
-  onClipboardClick: React.PropTypes.func.isRequired
+  text: PropTypes.string.isRequired,
+  displayType: PropTypes.oneOf(['icon', 'text', 'input']),
+  uniqueKey: PropTypes.string.isRequired,
+  onClipboardClick: PropTypes.func.isRequired
 };
diff --git a/app/addons/components/components/deletedatabasemodal.js b/app/addons/components/components/deletedatabasemodal.js
index eead46f..bb8e429 100644
--- a/app/addons/components/components/deletedatabasemodal.js
+++ b/app/addons/components/components/deletedatabasemodal.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 import {Modal} from "react-bootstrap";
@@ -25,8 +27,8 @@ export const DeleteDatabaseModal = React.createClass({
   },
 
   propTypes: {
-    showHide: React.PropTypes.func.isRequired,
-    modalProps: React.PropTypes.object
+    showHide: PropTypes.func.isRequired,
+    modalProps: PropTypes.object
   },
 
   close (e) {
diff --git a/app/addons/components/components/document.js b/app/addons/components/components/document.js
index a0cdde8..68a0b11 100644
--- a/app/addons/components/components/document.js
+++ b/app/addons/components/components/document.js
@@ -9,6 +9,8 @@
 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 // License for the specific language governing permissions and limitations under
 // the License.
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 import FauxtonAPI from "../../../core/api";
@@ -16,10 +18,10 @@ import Helpers from "../../documents/helpers";
 
 export const Document = React.createClass({
   propTypes: {
-    docIdentifier: React.PropTypes.string.isRequired,
-    docChecked: React.PropTypes.func.isRequired,
-    truncate: React.PropTypes.bool,
-    maxRows: React.PropTypes.number
+    docIdentifier: PropTypes.string.isRequired,
+    docChecked: PropTypes.func.isRequired,
+    truncate: PropTypes.bool,
+    maxRows: PropTypes.number
   },
 
   getDefaultProps () {
diff --git a/app/addons/components/components/polling.js b/app/addons/components/components/polling.js
index b6b8d37..245806e 100644
--- a/app/addons/components/components/polling.js
+++ b/app/addons/components/components/polling.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import ReactDOM from 'react-dom';
 
@@ -111,7 +113,7 @@ export class Polling extends React.Component {
       </div>
     );
   }
-};
+}
 
 Polling.defaultProps = {
   startValue: 0,
@@ -120,12 +122,12 @@ Polling.defaultProps = {
 };
 
 Polling.propTypes = {
-  startValue: React.PropTypes.number,
-  valueUnits: React.PropTypes.string,
-  min: React.PropTypes.number,
-  max: React.PropTypes.number.isRequired,
-  stepSize: React.PropTypes.number.isRequired,
-  onPoll: React.PropTypes.func.isRequired,
+  startValue: PropTypes.number,
+  valueUnits: PropTypes.string,
+  min: PropTypes.number,
+  max: PropTypes.number.isRequired,
+  stepSize: PropTypes.number.isRequired,
+  onPoll: PropTypes.func.isRequired,
 };
 
 export const RefreshBtn = ({refresh}) =>
@@ -145,5 +147,5 @@ export const RefreshBtn = ({refresh}) =>
   </div>;
 
 RefreshBtn.propTypes = {
-  refresh: React.PropTypes.func.isRequired
+  refresh: PropTypes.func.isRequired
 };
diff --git a/app/addons/components/components/stringeditmodal.js b/app/addons/components/components/stringeditmodal.js
index 44a8261..e718d59 100644
--- a/app/addons/components/components/stringeditmodal.js
+++ b/app/addons/components/components/stringeditmodal.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 import {Modal} from "react-bootstrap";
@@ -23,10 +25,10 @@ require('brace/theme/idle_fingers');
 export const StringEditModal = React.createClass({
 
   propTypes: {
-    value: React.PropTypes.string.isRequired,
-    visible: React.PropTypes.bool.isRequired,
-    onClose: React.PropTypes.func.isRequired,
-    onSave: React.PropTypes.func.isRequired
+    value: PropTypes.string.isRequired,
+    visible: PropTypes.bool.isRequired,
+    onClose: PropTypes.func.isRequired,
+    onSave: PropTypes.func.isRequired
   },
 
   getDefaultProps () {
diff --git a/app/addons/components/components/styledselect.js b/app/addons/components/components/styledselect.js
index fc1c27c..6cab5be 100644
--- a/app/addons/components/components/styledselect.js
+++ b/app/addons/components/components/styledselect.js
@@ -9,14 +9,16 @@
 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 // License for the specific language governing permissions and limitations under
 // the License.
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 
 export const StyledSelect = React.createClass({
   propTypes: {
-    selectValue: React.PropTypes.string.isRequired,
-    selectId: React.PropTypes.string.isRequired,
-    selectChange: React.PropTypes.func.isRequired
+    selectValue: PropTypes.string.isRequired,
+    selectId: PropTypes.string.isRequired,
+    selectChange: PropTypes.func.isRequired
   },
 
   render: function () {
diff --git a/app/addons/components/components/tabelement.js b/app/addons/components/components/tabelement.js
index 0946597..ea5d593 100644
--- a/app/addons/components/components/tabelement.js
+++ b/app/addons/components/components/tabelement.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 
@@ -40,10 +42,10 @@ export const TabElement = ({selected, text, onChange, iconClass}) => {
   );
 };
 TabElement.propTypes = {
-  selected: React.PropTypes.bool.isRequired,
-  text: React.PropTypes.string.isRequired,
-  onChange: React.PropTypes.func.isRequired,
-  iconClass: React.PropTypes.string,
+  selected: PropTypes.bool.isRequired,
+  text: PropTypes.string.isRequired,
+  onChange: PropTypes.func.isRequired,
+  iconClass: PropTypes.string,
 };
 
 export const TabElementWrapper = ({children}) => {
diff --git a/app/addons/components/components/tabwindowwrapper.js b/app/addons/components/components/tabwindowwrapper.js
index 49fd213..6f89f64 100644
--- a/app/addons/components/components/tabwindowwrapper.js
+++ b/app/addons/components/components/tabwindowwrapper.js
@@ -1,4 +1,5 @@
 import FauxtonAPI from '../../../core/api';
+import PropTypes from 'prop-types';
 import React from 'react';
 import {TabElement, TabElementWrapper} from './tabelement';
 
@@ -48,9 +49,9 @@ export class TabWindowWrapper extends React.Component {
     );
   }
 
-};
+}
 
 TabWindowWrapper.propTypes = {
-  tabs: React.PropTypes.array.isRequired,
-  selectedTab: React.PropTypes.string.isRequired
+  tabs: PropTypes.array.isRequired,
+  selectedTab: PropTypes.string.isRequired
 };
diff --git a/app/addons/components/components/tray.js b/app/addons/components/components/tray.js
index 8c5dfee..a106409 100644
--- a/app/addons/components/components/tray.js
+++ b/app/addons/components/components/tray.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 import {Overlay} from 'react-bootstrap';
@@ -17,10 +19,10 @@ import {TransitionMotion, spring} from 'react-motion';
 
 export const TrayContents = React.createClass({
   propTypes: {
-    contentVisible: React.PropTypes.bool.isRequired,
-    closeTray: React.PropTypes.func.isRequired,
-    onEnter: React.PropTypes.func,
-    container: React.PropTypes.object
+    contentVisible: PropTypes.bool.isRequired,
+    closeTray: PropTypes.func.isRequired,
+    onEnter: PropTypes.func,
+    container: PropTypes.object
   },
 
   defaultProps: {
diff --git a/app/addons/components/header-breadcrumbs.js b/app/addons/components/header-breadcrumbs.js
index 40ffaaf..e3ef11f 100644
--- a/app/addons/components/header-breadcrumbs.js
+++ b/app/addons/components/header-breadcrumbs.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import ReactDOM from 'react-dom';
 
@@ -24,7 +26,7 @@ export const Breadcrumbs = ({crumbs}) => {
 };
 
 Breadcrumbs.propTypes = {
-  crumbs: React.PropTypes.array.isRequired
+  crumbs: PropTypes.array.isRequired
 };
 
 
diff --git a/app/addons/components/layouts.js b/app/addons/components/layouts.js
index 00454b4..6010e11 100644
--- a/app/addons/components/layouts.js
+++ b/app/addons/components/layouts.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import ReactDOM from 'react-dom';
 import {NotificationCenterButton} from '../fauxton/notifications/notifications';
@@ -64,9 +66,9 @@ OnePaneHeader.defaultProps = {
 };
 
 OnePaneHeader.propTypes = {
-  docURL: React.PropTypes.string,
-  endpoint: React.PropTypes.string,
-  crumbs: React.PropTypes.array
+  docURL: PropTypes.string,
+  endpoint: PropTypes.string,
+  crumbs: PropTypes.array
 };
 
 export const OnePaneContent = ({children}) => {
diff --git a/app/addons/config/components.js b/app/addons/config/components.js
index b6dcdae..c57d713 100644
--- a/app/addons/config/components.js
+++ b/app/addons/config/components.js
@@ -10,6 +10,8 @@
 //  License for the specific language governing permissions and limitations under
 //  the License.
 
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 import Stores from "./stores";
@@ -396,10 +398,10 @@ const TabItem = ({active, link, title}) => {
 };
 
 TabItem.propTypes = {
-  active: React.PropTypes.bool.isRequired,
-  link: React.PropTypes.string.isRequired,
-  icon: React.PropTypes.string,
-  title: React.PropTypes.string.isRequired
+  active: PropTypes.bool.isRequired,
+  link: PropTypes.string.isRequired,
+  icon: PropTypes.string,
+  title: PropTypes.string.isRequired
 };
 
 const Tabs = ({sidebarItems, selectedTab}) => {
diff --git a/app/addons/cors/components/OriginInput.js b/app/addons/cors/components/OriginInput.js
index bcd8720..6ef352c 100644
--- a/app/addons/cors/components/OriginInput.js
+++ b/app/addons/cors/components/OriginInput.js
@@ -1,3 +1,4 @@
+import PropTypes from 'prop-types';
 import React, { Component } from "react";
 import { validateDomain, normalizeUrls } from "../helpers";
 
@@ -52,9 +53,9 @@ export default class OriginInput extends Component {
     );
   }
 
-};
+}
 
 OriginInput.propTypes = {
-  isVisible: React.PropTypes.bool.isRequired,
-  addOrigin: React.PropTypes.func.isRequired
+  isVisible: PropTypes.bool.isRequired,
+  addOrigin: PropTypes.func.isRequired
 };
diff --git a/app/addons/cors/components/OriginRow.js b/app/addons/cors/components/OriginRow.js
index cbc73eb..0e72c5b 100644
--- a/app/addons/cors/components/OriginRow.js
+++ b/app/addons/cors/components/OriginRow.js
@@ -1,3 +1,4 @@
+import PropTypes from 'prop-types';
 import React, { Component } from "react";
 import { validateDomain } from "../helpers";
 
@@ -77,10 +78,10 @@ export default class OriginRow extends Component {
     );
   }
 
-};
+}
 
 OriginRow.propTypes = {
-  origin: React.PropTypes.string.isRequired,
-  updateOrigin: React.PropTypes.func.isRequired,
-  deleteOrigin: React.PropTypes.func.isRequired
+  origin: PropTypes.string.isRequired,
+  updateOrigin: PropTypes.func.isRequired,
+  deleteOrigin: PropTypes.func.isRequired
 };
diff --git a/app/addons/cors/components/OriginTable.js b/app/addons/cors/components/OriginTable.js
index 41e14fa..be9f30d 100644
--- a/app/addons/cors/components/OriginTable.js
+++ b/app/addons/cors/components/OriginTable.js
@@ -1,3 +1,4 @@
+import PropTypes from 'prop-types';
 import React, { Component } from "react";
 import OriginRow from "./OriginRow";
 
@@ -38,11 +39,11 @@ export default class OriginTable extends Component {
     );
   }
 
-};
+}
 
 OriginTable.propTypes = {
-  isVisible: React.PropTypes.bool.isRequired,
-  origins: React.PropTypes.arrayOf(React.PropTypes.string),
-  updateOrigin: React.PropTypes.func.isRequired,
-  deleteOrigin: React.PropTypes.func.isRequired
+  isVisible: PropTypes.bool.isRequired,
+  origins: PropTypes.arrayOf(PropTypes.string),
+  updateOrigin: PropTypes.func.isRequired,
+  deleteOrigin: PropTypes.func.isRequired
 };
diff --git a/app/addons/cors/components/Origins.js b/app/addons/cors/components/Origins.js
index 103f8b5..e64bf24 100644
--- a/app/addons/cors/components/Origins.js
+++ b/app/addons/cors/components/Origins.js
@@ -1,3 +1,4 @@
+import PropTypes from 'prop-types';
 import React, { Component } from "react";
 
 export default class Origins extends Component {
@@ -36,10 +37,10 @@ export default class Origins extends Component {
       </div>
     );
   }
-};
+}
 
 Origins.propTypes = {
-  corsEnabled: React.PropTypes.bool,
-  isAllOrigins: React.PropTypes.bool,
-  originChange: React.PropTypes.func.isRequired
+  corsEnabled: PropTypes.bool,
+  isAllOrigins: PropTypes.bool,
+  originChange: PropTypes.func.isRequired
 };
diff --git a/app/addons/databases/components.js b/app/addons/databases/components.js
index 66eba36..04d1af1 100644
--- a/app/addons/databases/components.js
+++ b/app/addons/databases/components.js
@@ -1,3 +1,5 @@
+import FauxtonAPI from "../../core/api";
+
 // Licensed under the Apache License, Version 2.0 (the "License"); you may not
 // use this file except in compliance with the License. You may obtain a copy of
 // the License at
@@ -10,7 +12,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import FauxtonAPI from "../../core/api";
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 import Components from "../components/react-components";
@@ -72,9 +75,9 @@ var DatabasesController = React.createClass({
 const DatabaseTable = React.createClass({
 
   propTypes: {
-    dbList: React.PropTypes.array.isRequired,
-    showDeleteDatabaseModal: React.PropTypes.object.isRequired,
-    loading: React.PropTypes.bool.isRequired,
+    dbList: PropTypes.array.isRequired,
+    showDeleteDatabaseModal: PropTypes.object.isRequired,
+    loading: PropTypes.bool.isRequired,
   },
 
   createRows (dbList) {
@@ -135,7 +138,7 @@ const DatabaseTable = React.createClass({
 var DatabaseRow = React.createClass({
 
   propTypes: {
-    row: React.PropTypes.object
+    row: PropTypes.object
   },
 
   getExtensionColumns (row) {
@@ -295,7 +298,7 @@ const JumpToDatabaseWidget = ({loadOptions}) => {
   );
 };
 JumpToDatabaseWidget.propTypes = {
-  loadOptions: React.PropTypes.func.isRequired
+  loadOptions: PropTypes.func.isRequired
 };
 
 var DatabasePagination = React.createClass({
diff --git a/app/addons/documents/changes/components.js b/app/addons/documents/changes/components.js
index 781b74b..2604031 100644
--- a/app/addons/documents/changes/components.js
+++ b/app/addons/documents/changes/components.js
@@ -1,3 +1,5 @@
+import FauxtonAPI from "../../../core/api";
+
 // Licensed under the Apache License, Version 2.0 (the "License"); you may not
 // use this file except in compliance with the License. You may obtain a copy of
 // the License at
@@ -10,7 +12,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import FauxtonAPI from "../../../core/api";
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 import Actions from "./actions";
@@ -203,9 +206,9 @@ class AddFilterForm extends React.Component {
   }
 }
 AddFilterForm.PropTypes = {
-  addFilter: React.PropTypes.func.isRequired,
-  hasFilter: React.PropTypes.func.isRequired,
-  tooltips: React.PropTypes.string
+  addFilter: PropTypes.func.isRequired,
+  hasFilter: PropTypes.func.isRequired,
+  tooltips: PropTypes.string
 };
 AddFilterForm.defaultProps = {
   tooltip: ''
@@ -324,8 +327,8 @@ class ChangeRow extends React.Component {
 }
 
 ChangeRow.PropTypes = {
-  change: React.PropTypes.object,
-  databaseName: React.PropTypes.string.isRequired
+  change: PropTypes.object,
+  databaseName: PropTypes.string.isRequired
 };
 
 
diff --git a/app/addons/documents/components/header-docs-right.js b/app/addons/documents/components/header-docs-right.js
index 23f7247..26def63 100644
--- a/app/addons/documents/components/header-docs-right.js
+++ b/app/addons/documents/components/header-docs-right.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import QueryOptionsContainer from '../index-results/containers/QueryOptionsContainer';
 import JumpToDoc from './jumptodoc';
@@ -29,11 +31,11 @@ const RightAllDocsHeader = ({database, hideQueryOptions, hideJumpToDoc, queryDoc
   </div>;
 
 RightAllDocsHeader.propTypes = {
-  database: React.PropTypes.object.isRequired,
-  hideQueryOptions: React.PropTypes.bool,
-  isRedux: React.PropTypes.bool,
-  queryDocs: React.PropTypes.func,
-  selectedNavItem: React.PropTypes.object
+  database: PropTypes.object.isRequired,
+  hideQueryOptions: PropTypes.bool,
+  isRedux: PropTypes.bool,
+  queryDocs: PropTypes.func,
+  selectedNavItem: PropTypes.object
 };
 
 RightAllDocsHeader.defaultProps = {
diff --git a/app/addons/documents/components/jumptodoc.js b/app/addons/documents/components/jumptodoc.js
index 5a5f79b..cbe753a 100644
--- a/app/addons/documents/components/jumptodoc.js
+++ b/app/addons/documents/components/jumptodoc.js
@@ -1,3 +1,6 @@
+import app from "../../../app";
+import FauxtonAPI from "../../../core/api";
+
 // Licensed under the Apache License, Version 2.0 (the "License"); you may not
 // use this file except in compliance with the License. You may obtain a copy of
 // the License at
@@ -10,8 +13,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import app from "../../../app";
-import FauxtonAPI from "../../../core/api";
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 import ReactSelect from "react-select";
@@ -38,8 +41,8 @@ const JumpToDoc = ({database, loadOptions}) => {
 };
 
 JumpToDoc.propTypes = {
-  database: React.PropTypes.object.isRequired,
-  loadOptions: React.PropTypes.func.isRequired,
+  database: PropTypes.object.isRequired,
+  loadOptions: PropTypes.func.isRequired,
 };
 
 export default JumpToDoc;
diff --git a/app/addons/documents/components/results-toolbar.js b/app/addons/documents/components/results-toolbar.js
index 90fc5e0..e9f0b13 100644
--- a/app/addons/documents/components/results-toolbar.js
+++ b/app/addons/documents/components/results-toolbar.js
@@ -9,6 +9,8 @@
 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 // License for the specific language governing permissions and limitations under
 // the License.
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import BulkDocumentHeaderController from "../header/header";
 import Stores from "../sidebar/stores";
@@ -72,14 +74,14 @@ export class ResultsToolBar extends React.Component {
       </div>
     );
   }
-};
+}
 
 ResultsToolBar.propTypes = {
-  removeItem: React.PropTypes.func.isRequired,
-  allDocumentsSelected: React.PropTypes.bool.isRequired,
-  hasSelectedItem: React.PropTypes.bool.isRequired,
-  toggleSelectAll: React.PropTypes.func.isRequired,
-  isLoading: React.PropTypes.bool.isRequired,
-  hasResults: React.PropTypes.bool.isRequired,
-  isListDeletable: React.PropTypes.bool
+  removeItem: PropTypes.func.isRequired,
+  allDocumentsSelected: PropTypes.bool.isRequired,
+  hasSelectedItem: PropTypes.bool.isRequired,
+  toggleSelectAll: PropTypes.func.isRequired,
+  isLoading: PropTypes.bool.isRequired,
+  hasResults: PropTypes.bool.isRequired,
+  isListDeletable: PropTypes.bool
 };
diff --git a/app/addons/documents/doc-editor/components.js b/app/addons/documents/doc-editor/components.js
index 1da1f1c..251e087 100644
--- a/app/addons/documents/doc-editor/components.js
+++ b/app/addons/documents/doc-editor/components.js
@@ -1,3 +1,6 @@
+import FauxtonAPI from "../../../core/api";
+import app from "../../../app";
+
 // Licensed under the Apache License, Version 2.0 (the "License"); you may not
 // use this file except in compliance with the License. You may obtain a copy of
 // the License at
@@ -11,8 +14,8 @@
 // the License.
 
 
-import FauxtonAPI from "../../../core/api";
-import app from "../../../app";
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 import Actions from "./actions";
@@ -211,8 +214,8 @@ var DocEditorController = React.createClass({
 var AttachmentsPanelButton = React.createClass({
 
   propTypes: {
-    isLoading: React.PropTypes.bool.isRequired,
-    doc: React.PropTypes.object
+    isLoading: PropTypes.bool.isRequired,
+    doc: PropTypes.object
   },
 
   getDefaultProps: function () {
@@ -263,9 +266,9 @@ var AttachmentsPanelButton = React.createClass({
 
 var PanelButton = React.createClass({
   propTypes: {
-    title: React.PropTypes.string.isRequired,
-    onClick: React.PropTypes.func.isRequired,
-    className: React.PropTypes.string
+    title: PropTypes.string.isRequired,
+    onClick: PropTypes.func.isRequired,
+    className: PropTypes.string
   },
 
   getDefaultProps: function () {
@@ -293,8 +296,8 @@ var PanelButton = React.createClass({
 
 var UploadModal = React.createClass({
   propTypes: {
-    visible: React.PropTypes.bool.isRequired,
-    doc: React.PropTypes.object
+    visible: PropTypes.bool.isRequired,
+    doc: PropTypes.object
   },
 
   getInitialState: function () {
@@ -375,10 +378,10 @@ var UploadModal = React.createClass({
 
 const CloneDocModal = React.createClass({
   propTypes: {
-    visible: React.PropTypes.bool.isRequired,
-    doc: React.PropTypes.object,
-    database: React.PropTypes.object.isRequired,
-    onSubmit: React.PropTypes.func.isRequired
+    visible: PropTypes.bool.isRequired,
+    doc: PropTypes.object,
+    database: PropTypes.object.isRequired,
+    onSubmit: PropTypes.func.isRequired
   },
 
   getInitialState: function () {
diff --git a/app/addons/documents/index-editor/components/DesignDocSelector.js b/app/addons/documents/index-editor/components/DesignDocSelector.js
index 2afacb0..4ae4648 100644
--- a/app/addons/documents/index-editor/components/DesignDocSelector.js
+++ b/app/addons/documents/index-editor/components/DesignDocSelector.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React, { Component } from "react";
 import ReactDOM from "react-dom";
 import FauxtonAPI from "../../../../core/api";
@@ -111,11 +113,11 @@ DesignDocSelector.defaultProps = {
 };
 
 DesignDocSelector.propTypes = {
-  designDocList: React.PropTypes.array.isRequired,
-  onSelectDesignDoc: React.PropTypes.func.isRequired,
-  onChangeNewDesignDocName: React.PropTypes.func.isRequired,
-  selectedDesignDocName: React.PropTypes.string.isRequired,
-  newDesignDocName: React.PropTypes.string.isRequired,
-  designDocLabel: React.PropTypes.string,
-  docURL: React.PropTypes.string
+  designDocList: PropTypes.array.isRequired,
+  onSelectDesignDoc: PropTypes.func.isRequired,
+  onChangeNewDesignDocName: PropTypes.func.isRequired,
+  selectedDesignDocName: PropTypes.string.isRequired,
+  newDesignDocName: PropTypes.string.isRequired,
+  designDocLabel: PropTypes.string,
+  docURL: PropTypes.string
 };
diff --git a/app/addons/documents/index-results/components/pagination/PagingControls.js b/app/addons/documents/index-results/components/pagination/PagingControls.js
index dd02c40..4be683e 100644
--- a/app/addons/documents/index-results/components/pagination/PagingControls.js
+++ b/app/addons/documents/index-results/components/pagination/PagingControls.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 
 export default function PagingControls ({ nextClicked, previousClicked, canShowPrevious, canShowNext }) {
@@ -36,11 +38,11 @@ export default function PagingControls ({ nextClicked, previousClicked, canShowP
       </ul>
     </div>
   );
-};
+}
 
 PagingControls.propTypes = {
-  nextClicked: React.PropTypes.func.isRequired,
-  previousClicked: React.PropTypes.func.isRequired,
-  canShowPrevious: React.PropTypes.bool.isRequired,
-  canShowNext: React.PropTypes.bool.isRequired
+  nextClicked: PropTypes.func.isRequired,
+  previousClicked: PropTypes.func.isRequired,
+  canShowPrevious: PropTypes.bool.isRequired,
+  canShowNext: PropTypes.bool.isRequired
 };
diff --git a/app/addons/documents/index-results/components/pagination/PerPageSelector.js b/app/addons/documents/index-results/components/pagination/PerPageSelector.js
index ba9657c..97373f6 100644
--- a/app/addons/documents/index-results/components/pagination/PerPageSelector.js
+++ b/app/addons/documents/index-results/components/pagination/PerPageSelector.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 
 export default class PerPageSelector extends React.Component {
@@ -41,7 +43,7 @@ export default class PerPageSelector extends React.Component {
     );
   }
 
-};
+}
 
 PerPageSelector.defaultProps = {
   label: 'Documents per page: ',
@@ -49,8 +51,8 @@ PerPageSelector.defaultProps = {
 };
 
 PerPageSelector.propTypes = {
-  perPage: React.PropTypes.number.isRequired,
-  perPageChange: React.PropTypes.func.isRequired,
-  label: React.PropTypes.string,
-  options: React.PropTypes.array
+  perPage: PropTypes.number.isRequired,
+  perPageChange: PropTypes.func.isRequired,
+  label: PropTypes.string,
+  options: PropTypes.array
 };
diff --git a/app/addons/documents/index-results/components/pagination/TableControls.js b/app/addons/documents/index-results/components/pagination/TableControls.js
index 0023c20..58a5740 100644
--- a/app/addons/documents/index-results/components/pagination/TableControls.js
+++ b/app/addons/documents/index-results/components/pagination/TableControls.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 
 export default class TableControls extends React.Component {
@@ -55,10 +57,10 @@ export default class TableControls extends React.Component {
       </div>
     );
   }
-};
+}
 
 TableControls.propTypes = {
-  prioritizedEnabled: React.PropTypes.bool.isRequired,
-  displayedFields: React.PropTypes.object.isRequired,
-  toggleShowAllColumns: React.PropTypes.func.isRequired
+  prioritizedEnabled: PropTypes.bool.isRequired,
+  displayedFields: PropTypes.object.isRequired,
+  toggleShowAllColumns: PropTypes.func.isRequired
 };
diff --git a/app/addons/documents/index-results/components/queryoptions/MainFieldsView.js b/app/addons/documents/index-results/components/queryoptions/MainFieldsView.js
index a44e070..104605b 100644
--- a/app/addons/documents/index-results/components/queryoptions/MainFieldsView.js
+++ b/app/addons/documents/index-results/components/queryoptions/MainFieldsView.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 
 export default class MainFieldsView extends React.Component {
@@ -94,13 +96,13 @@ export default class MainFieldsView extends React.Component {
     );
   }
 
-};
+}
 
 MainFieldsView.propTypes = {
-  toggleIncludeDocs: React.PropTypes.func.isRequired,
-  includeDocs: React.PropTypes.bool.isRequired,
-  reduce: React.PropTypes.bool.isRequired,
-  toggleReduce: React.PropTypes.func,
-  updateGroupLevel: React.PropTypes.func,
-  docURL: React.PropTypes.string.isRequired
+  toggleIncludeDocs: PropTypes.func.isRequired,
+  includeDocs: PropTypes.bool.isRequired,
+  reduce: PropTypes.bool.isRequired,
+  toggleReduce: PropTypes.func,
+  updateGroupLevel: PropTypes.func,
+  docURL: PropTypes.string.isRequired
 };
diff --git a/app/addons/documents/index-results/components/queryoptions/QueryButtons.js b/app/addons/documents/index-results/components/queryoptions/QueryButtons.js
index 2251c11..712f79a 100644
--- a/app/addons/documents/index-results/components/queryoptions/QueryButtons.js
+++ b/app/addons/documents/index-results/components/queryoptions/QueryButtons.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 
 export default class QueryButtons extends React.Component {
@@ -31,8 +33,8 @@ export default class QueryButtons extends React.Component {
       </div>
     );
   }
-};
+}
 
 QueryButtons.propTypes = {
-  onCancel: React.PropTypes.func.isRequired
+  onCancel: PropTypes.func.isRequired
 };
diff --git a/app/addons/documents/index-results/components/queryoptions/QueryOptions.js b/app/addons/documents/index-results/components/queryoptions/QueryOptions.js
index 42b1297..7fe7f10 100644
--- a/app/addons/documents/index-results/components/queryoptions/QueryOptions.js
+++ b/app/addons/documents/index-results/components/queryoptions/QueryOptions.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import FauxtonAPI from '../../../../../core/api';
 import GeneralComponents from '../../../../components/react-components';
@@ -159,17 +161,17 @@ export default class QueryOptions extends React.Component {
       </div>
     );
   }
-};
+}
 
 QueryOptions.propTypes = {
-  contentVisible: React.PropTypes.bool.isRequired,
-  queryOptionsApplyFilterOnlyDdocs: React.PropTypes.func.isRequired,
-  queryOptionsRemoveFilterOnlyDdocs: React.PropTypes.func.isRequired,
-  queryOptionsExecute: React.PropTypes.func.isRequired,
-  queryOptionsParams: React.PropTypes.object.isRequired,
-  perPage: React.PropTypes.number.isRequired,
-  resetPagination: React.PropTypes.func.isRequired,
-  selectedLayout: React.PropTypes.string.isRequired,
-  changeLayout: React.PropTypes.func.isRequired,
-  queryOptionsToggleVisibility: React.PropTypes.func.isRequired
+  contentVisible: PropTypes.bool.isRequired,
+  queryOptionsApplyFilterOnlyDdocs: PropTypes.func.isRequired,
+  queryOptionsRemoveFilterOnlyDdocs: PropTypes.func.isRequired,
+  queryOptionsExecute: PropTypes.func.isRequired,
+  queryOptionsParams: PropTypes.object.isRequired,
+  perPage: PropTypes.number.isRequired,
+  resetPagination: PropTypes.func.isRequired,
+  selectedLayout: PropTypes.string.isRequired,
+  changeLayout: PropTypes.func.isRequired,
+  queryOptionsToggleVisibility: PropTypes.func.isRequired
 };
diff --git a/app/addons/documents/index-results/components/results/IndexResults.js b/app/addons/documents/index-results/components/results/IndexResults.js
index 339da41..be19f2a 100644
--- a/app/addons/documents/index-results/components/results/IndexResults.js
+++ b/app/addons/documents/index-results/components/results/IndexResults.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import ResultsScreen from './ResultsScreen';
 
@@ -109,8 +111,8 @@ export default class IndexResults extends React.Component {
         {...this.props} />
     );
   }
-};
+}
 
 IndexResults.propTypes = {
-  fetchAtStartup: React.PropTypes.bool.isRequired
+  fetchAtStartup: PropTypes.bool.isRequired
 };
diff --git a/app/addons/documents/index-results/components/results/NoResultsScreen.js b/app/addons/documents/index-results/components/results/NoResultsScreen.js
index 2279b28..0d4e862 100644
--- a/app/addons/documents/index-results/components/results/NoResultsScreen.js
+++ b/app/addons/documents/index-results/components/results/NoResultsScreen.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 
 export default function NoResultsScreen ({ text }) {
@@ -19,8 +21,8 @@ export default function NoResultsScreen ({ text }) {
       <h3>{text}</h3>
     </div>
   );
-};
+}
 
 NoResultsScreen.propTypes = {
-  text: React.PropTypes.string.isRequired
+  text: PropTypes.string.isRequired
 };
diff --git a/app/addons/documents/index-results/components/results/TableRow.js b/app/addons/documents/index-results/components/results/TableRow.js
index 4db7d7c..6728996 100644
--- a/app/addons/documents/index-results/components/results/TableRow.js
+++ b/app/addons/documents/index-results/components/results/TableRow.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import FauxtonAPI from '../../../../../core/api';
 import Components from '../../../../components/react-components';
@@ -136,13 +138,13 @@ export default class TableRow extends React.Component {
       </tr>
     );
   }
-};
+}
 
 TableRow.propTypes = {
-  docIdentifier: React.PropTypes.string.isRequired,
-  docChecked: React.PropTypes.func.isRequired,
-  isSelected: React.PropTypes.bool.isRequired,
-  index: React.PropTypes.number.isRequired,
-  data: React.PropTypes.object.isRequired,
-  onClick: React.PropTypes.func.isRequired
+  docIdentifier: PropTypes.string.isRequired,
+  docChecked: PropTypes.func.isRequired,
+  isSelected: PropTypes.bool.isRequired,
+  index: PropTypes.number.isRequired,
+  data: PropTypes.object.isRequired,
+  onClick: PropTypes.func.isRequired
 };
diff --git a/app/addons/documents/index-results/containers/ApiBarContainer.js b/app/addons/documents/index-results/containers/ApiBarContainer.js
index 2f37753..d5d514a 100644
--- a/app/addons/documents/index-results/containers/ApiBarContainer.js
+++ b/app/addons/documents/index-results/containers/ApiBarContainer.js
@@ -1,3 +1,5 @@
+import { connect } from 'react-redux';
+
 // Licensed under the Apache License, Version 2.0 (the "License"); you may not
 // use this file except in compliance with the License. You may obtain a copy of
 // the License at
@@ -10,8 +12,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import React from 'react';
-import { connect } from 'react-redux';
+import PropTypes from 'prop-types';
+
 import queryString from 'query-string';
 import { ApiBarWrapper } from '../../../components/layouts';
 import { getQueryOptionsParams } from '../reducers';
@@ -38,8 +40,8 @@ const ApiBarContainer = connect (
 export default ApiBarContainer;
 
 ApiBarContainer.propTypes = {
-  databaseName: React.PropTypes.string,
-  docUrl: React.PropTypes.string,
-  endpoint: React.PropTypes.string,
-  endpointAddQueryOptions: React.PropTypes.bool
+  databaseName: PropTypes.string,
+  docUrl: PropTypes.string,
+  endpoint: PropTypes.string,
+  endpointAddQueryOptions: PropTypes.bool
 };
diff --git a/app/addons/documents/index-results/containers/IndexResultsContainer.js b/app/addons/documents/index-results/containers/IndexResultsContainer.js
index 5746fac..91dcbc8 100644
--- a/app/addons/documents/index-results/containers/IndexResultsContainer.js
+++ b/app/addons/documents/index-results/containers/IndexResultsContainer.js
@@ -10,7 +10,7 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import React from 'react';
+import PropTypes from 'prop-types';
 import { connect } from 'react-redux';
 import IndexResults from '../components/results/IndexResults';
 import { fetchDocs, bulkDeleteDocs } from '../actions/fetch';
@@ -102,6 +102,6 @@ const IndexResultsContainer = connect (
 export default IndexResultsContainer;
 
 IndexResultsContainer.propTypes = {
-  queryDocs: React.PropTypes.func.isRequired,
-  docType: React.PropTypes.string.isRequired
+  queryDocs: PropTypes.func.isRequired,
+  docType: PropTypes.string.isRequired
 };
diff --git a/app/addons/documents/index-results/containers/PaginationContainer.js b/app/addons/documents/index-results/containers/PaginationContainer.js
index 4077003..5221d99 100644
--- a/app/addons/documents/index-results/containers/PaginationContainer.js
+++ b/app/addons/documents/index-results/containers/PaginationContainer.js
@@ -10,7 +10,7 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import React from 'react';
+import PropTypes from 'prop-types';
 import { connect } from 'react-redux';
 import PaginationFooter from '../components/pagination/PaginationFooter';
 import {
@@ -79,5 +79,5 @@ const PaginationFooterContainer = connect (
 export default PaginationFooterContainer;
 
 PaginationFooterContainer.propTypes = {
-  queryDocs: React.PropTypes.func.isRequired
+  queryDocs: PropTypes.func.isRequired
 };
diff --git a/app/addons/documents/index-results/containers/QueryOptionsContainer.js b/app/addons/documents/index-results/containers/QueryOptionsContainer.js
index 957a43e..179f67e 100644
--- a/app/addons/documents/index-results/containers/QueryOptionsContainer.js
+++ b/app/addons/documents/index-results/containers/QueryOptionsContainer.js
@@ -10,7 +10,7 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import React from 'react';
+import PropTypes from 'prop-types';
 import { connect } from 'react-redux';
 import DocHelpers from '../../helpers';
 import QueryOptions from '../components/queryoptions/QueryOptions';
@@ -131,5 +131,5 @@ const QueryOptionsContainer = connect (
 export default QueryOptionsContainer;
 
 QueryOptionsContainer.propTypes = {
-  queryDocs: React.PropTypes.func.isRequired
+  queryDocs: PropTypes.func.isRequired
 };
diff --git a/app/addons/documents/layouts.js b/app/addons/documents/layouts.js
index 3773068..85b7611 100644
--- a/app/addons/documents/layouts.js
+++ b/app/addons/documents/layouts.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import { NotificationCenterButton } from '../fauxton/notifications/notifications';
 import SidebarControllerContainer from "./sidebar/SidebarControllerContainer";
@@ -70,16 +72,16 @@ export const TabsSidebarHeader = ({
 };
 
 TabsSidebarHeader.propTypes = {
-  dbName: React.PropTypes.string.isRequired,
-  dropDownLinks: React.PropTypes.array.isRequired,
-  docURL: React.PropTypes.string,
-  endpoint: React.PropTypes.string,
-  showIncludeAllDocs: React.PropTypes.bool,
-  hideQueryOptions: React.PropTypes.bool,
-  hideJumpToDoc: React.PropTypes.bool,
-  database: React.PropTypes.object.isRequired,
-  queryDocs: React.PropTypes.func,
-  selectedNavItem: React.PropTypes.object
+  dbName: PropTypes.string.isRequired,
+  dropDownLinks: PropTypes.array.isRequired,
+  docURL: PropTypes.string,
+  endpoint: PropTypes.string,
+  showIncludeAllDocs: PropTypes.bool,
+  hideQueryOptions: PropTypes.bool,
+  hideJumpToDoc: PropTypes.bool,
+  database: PropTypes.object.isRequired,
+  queryDocs: PropTypes.func,
+  selectedNavItem: PropTypes.object
 };
 
 TabsSidebarHeader.defaultProps = {
@@ -121,9 +123,9 @@ TabsSidebarContent.defaultProps = {
 };
 
 TabsSidebarContent.propTypes = {
-  hideFooter: React.PropTypes.bool,
-  lowerContent: React.PropTypes.object,
-  upperContent: React.PropTypes.object,
+  hideFooter: PropTypes.bool,
+  lowerContent: PropTypes.object,
+  upperContent: PropTypes.object,
 };
 
 export const DocsTabsSidebarLayout = ({
@@ -223,9 +225,9 @@ ViewsTabsSidebarLayout.defaultProps = {
 };
 
 ViewsTabsSidebarLayout.propTypes = {
-  showEditView: React.PropTypes.bool,
-  docURL: React.PropTypes.string.isRequired,
-  endpoint: React.PropTypes.string,
-  dbName: React.PropTypes.string.isRequired,
-  dropDownLinks: React.PropTypes.array.isRequired
+  showEditView: PropTypes.bool,
+  docURL: PropTypes.string.isRequired,
+  endpoint: PropTypes.string,
+  dbName: PropTypes.string.isRequired,
+  dropDownLinks: PropTypes.array.isRequired
 };
diff --git a/app/addons/documents/mango/components/ExplainPage.js b/app/addons/documents/mango/components/ExplainPage.js
index f59e5b9..db7eef3 100644
--- a/app/addons/documents/mango/components/ExplainPage.js
+++ b/app/addons/documents/mango/components/ExplainPage.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React, { Component } from "react";
 
 export default class ExplainPage extends Component {
@@ -31,5 +33,5 @@ export default class ExplainPage extends Component {
 }
 
 ExplainPage.propTypes = {
-  explainPlan: React.PropTypes.object.isRequired
+  explainPlan: PropTypes.object.isRequired
 };
diff --git a/app/addons/documents/mango/components/MangoIndexEditor.js b/app/addons/documents/mango/components/MangoIndexEditor.js
index cccc1e1..6e98af7 100644
--- a/app/addons/documents/mango/components/MangoIndexEditor.js
+++ b/app/addons/documents/mango/components/MangoIndexEditor.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React, { Component } from "react";
 import ReactSelect from "react-select";
 import "../../../../../assets/js/plugins/prettify";
@@ -122,7 +124,7 @@ export default class MangoIndexEditor extends Component {
 }
 
 MangoIndexEditor.propTypes = {
-  databaseName: React.PropTypes.string.isRequired,
-  saveIndex: React.PropTypes.func.isRequired,
-  queryIndexCode: React.PropTypes.string.isRequired
+  databaseName: PropTypes.string.isRequired,
+  saveIndex: PropTypes.func.isRequired,
+  queryIndexCode: PropTypes.string.isRequired
 };
diff --git a/app/addons/documents/mango/components/MangoQueryEditor.js b/app/addons/documents/mango/components/MangoQueryEditor.js
index 604f706..c37008f 100644
--- a/app/addons/documents/mango/components/MangoQueryEditor.js
+++ b/app/addons/documents/mango/components/MangoQueryEditor.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React, { Component } from "react";
 import ReactSelect from "react-select";
 import "../../../../../assets/js/plugins/prettify";
@@ -158,11 +160,11 @@ export default class MangoQueryEditor extends Component {
 }
 
 MangoQueryEditor.propTypes = {
-  description: React.PropTypes.string.isRequired,
-  editorTitle: React.PropTypes.string.isRequired,
-  queryFindCode: React.PropTypes.string.isRequired,
-  queryFindCodeChanged: React.PropTypes.bool,
-  databaseName: React.PropTypes.string.isRequired,
-  runExplainQuery: React.PropTypes.func.isRequired,
-  manageIndexes: React.PropTypes.func.isRequired,
+  description: PropTypes.string.isRequired,
+  editorTitle: PropTypes.string.isRequired,
+  queryFindCode: PropTypes.string.isRequired,
+  queryFindCodeChanged: PropTypes.bool,
+  databaseName: PropTypes.string.isRequired,
+  runExplainQuery: PropTypes.func.isRequired,
+  manageIndexes: PropTypes.func.isRequired,
 };
diff --git a/app/addons/documents/rev-browser/rev-browser.components.js b/app/addons/documents/rev-browser/rev-browser.components.js
index 38bea35..7edf906 100644
--- a/app/addons/documents/rev-browser/rev-browser.components.js
+++ b/app/addons/documents/rev-browser/rev-browser.components.js
@@ -1,3 +1,5 @@
+import app from "../../../app";
+
 // Licensed under the Apache License, Version 2.0 (the "License"); you may not
 // use this file except in compliance with the License. You may obtain a copy of
 // the License at
@@ -10,7 +12,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import app from "../../../app";
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 import RevActions from "./rev-browser.actions";
@@ -187,9 +190,9 @@ const RevisionDiffArea = ({ours, theirs}) => {
   );
 };
 RevisionDiffArea.propTypes = {
-  ours: React.PropTypes.object,
-  theirs: React.PropTypes.object,
-  currentRev: React.PropTypes.string
+  ours: PropTypes.object,
+  theirs: PropTypes.object,
+  currentRev: PropTypes.string
 };
 
 
@@ -210,11 +213,11 @@ const ConflictingRevisionsDropDown = ({options, selected, onRevisionClick, onBac
   );
 };
 ConflictingRevisionsDropDown.propTypes = {
-  options: React.PropTypes.array.isRequired,
-  selected: React.PropTypes.string.isRequired,
-  onRevisionClick: React.PropTypes.func.isRequired,
-  onBackwardClick: React.PropTypes.func.isRequired,
-  onForwardClick: React.PropTypes.func.isRequired,
+  options: PropTypes.array.isRequired,
+  selected: PropTypes.string.isRequired,
+  onRevisionClick: PropTypes.func.isRequired,
+  onBackwardClick: PropTypes.func.isRequired,
+  onForwardClick: PropTypes.func.isRequired,
 };
 
 class RevisionBrowserControls extends React.Component {
@@ -326,9 +329,9 @@ class RevisionBrowserControls extends React.Component {
   }
 }
 RevisionBrowserControls.propTypes = {
-  tree: React.PropTypes.object.isRequired,
-  ours: React.PropTypes.object.isRequired,
-  conflictingRevs: React.PropTypes.array.isRequired,
+  tree: PropTypes.object.isRequired,
+  ours: PropTypes.object.isRequired,
+  conflictingRevs: PropTypes.array.isRequired,
 };
 
 class ConfirmModal extends React.Component {
@@ -409,7 +412,7 @@ class ConfirmModal extends React.Component {
   }
 }
 ConfirmModal.propTypes = {
-  onConfirm: React.PropTypes.func.isRequired,
+  onConfirm: PropTypes.func.isRequired,
 };
 
 const BackForwardControls = ({onClick, forward}) => {
@@ -419,7 +422,7 @@ const BackForwardControls = ({onClick, forward}) => {
   return <div style={style} className={icon} onClick={onClick}></div>;
 };
 BackForwardControls.propTypes = {
-  onClick: React.PropTypes.func.isRequired,
+  onClick: PropTypes.func.isRequired,
 };
 
 export default {
diff --git a/app/addons/documents/sidebar/sidebar.js b/app/addons/documents/sidebar/sidebar.js
index f5cd83a..23826e0 100644
--- a/app/addons/documents/sidebar/sidebar.js
+++ b/app/addons/documents/sidebar/sidebar.js
@@ -1,3 +1,7 @@
+import app from "../../../app";
+import Helpers from "../../../helpers";
+import FauxtonAPI from "../../../core/api";
+
 // Licensed under the Apache License, Version 2.0 (the "License"); you may not
 // use this file except in compliance with the License. You may obtain a copy of
 // the License at
@@ -10,9 +14,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import app from "../../../app";
-import Helpers from "../../../helpers";
-import FauxtonAPI from "../../../core/api";
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 import Stores from "./stores";
@@ -38,7 +41,7 @@ var deleteDbModalStore = ComponentsStore.deleteDbModalStore;
 
 var MainSidebar = React.createClass({
   propTypes: {
-    selectedNavItem: React.PropTypes.string.isRequired
+    selectedNavItem: PropTypes.string.isRequired
   },
 
   getNewButtonLinks: function () {  // these are links for the sidebar '+' on All Docs and All Design Docs
@@ -117,15 +120,15 @@ var MainSidebar = React.createClass({
 var IndexSection = React.createClass({
 
   propTypes: {
-    urlNamespace: React.PropTypes.string.isRequired,
-    indexLabel: React.PropTypes.string.isRequired,
-    database: React.PropTypes.object.isRequired,
-    designDocName: React.PropTypes.string.isRequired,
-    items: React.PropTypes.array.isRequired,
-    isExpanded: React.PropTypes.bool.isRequired,
-    selectedIndex: React.PropTypes.string.isRequired,
-    onDelete: React.PropTypes.func.isRequired,
-    onClone: React.PropTypes.func.isRequired
+    urlNamespace: PropTypes.string.isRequired,
+    indexLabel: PropTypes.string.isRequired,
+    database: PropTypes.object.isRequired,
+    designDocName: PropTypes.string.isRequired,
+    items: PropTypes.array.isRequired,
+    isExpanded: PropTypes.bool.isRequired,
+    selectedIndex: PropTypes.string.isRequired,
+    onDelete: PropTypes.func.isRequired,
+    onClone: PropTypes.func.isRequired
   },
 
   getInitialState: function () {
@@ -254,12 +257,12 @@ var IndexSection = React.createClass({
 
 var DesignDoc = React.createClass({
   propTypes: {
-    database: React.PropTypes.object.isRequired,
-    sidebarListTypes: React.PropTypes.array.isRequired,
-    isExpanded: React.PropTypes.bool.isRequired,
-    selectedNavInfo: React.PropTypes.object.isRequired,
-    toggledSections: React.PropTypes.object.isRequired,
-    designDocName:  React.PropTypes.string.isRequired
+    database: PropTypes.object.isRequired,
+    sidebarListTypes: PropTypes.array.isRequired,
+    isExpanded: PropTypes.bool.isRequired,
+    selectedNavInfo: PropTypes.object.isRequired,
+    toggledSections: PropTypes.object.isRequired,
+    designDocName:  PropTypes.string.isRequired
   },
 
   getInitialState: function () {
@@ -574,15 +577,15 @@ var SidebarController = React.createClass({
 
 var CloneIndexModal = React.createClass({
   propTypes: {
-    visible: React.PropTypes.bool.isRequired,
-    title: React.PropTypes.string,
-    close: React.PropTypes.func.isRequired,
-    submit: React.PropTypes.func.isRequired,
-    designDocArray: React.PropTypes.array.isRequired,
-    selectedDesignDoc: React.PropTypes.string.isRequired,
-    newDesignDocName: React.PropTypes.string.isRequired,
-    newIndexName: React.PropTypes.string.isRequired,
-    indexLabel: React.PropTypes.string.isRequired
+    visible: PropTypes.bool.isRequired,
+    title: PropTypes.string,
+    close: PropTypes.func.isRequired,
+    submit: PropTypes.func.isRequired,
+    designDocArray: PropTypes.array.isRequired,
+    selectedDesignDoc: PropTypes.string.isRequired,
+    newDesignDocName: PropTypes.string.isRequired,
+    newIndexName: PropTypes.string.isRequired,
+    indexLabel: PropTypes.string.isRequired
   },
 
   getDefaultProps: function () {
diff --git a/app/addons/fauxton/components.js b/app/addons/fauxton/components.js
index c70325d..ec2e03e 100644
--- a/app/addons/fauxton/components.js
+++ b/app/addons/fauxton/components.js
@@ -1,3 +1,5 @@
+import FauxtonAPI from "../../core/api";
+
 // Licensed under the Apache License, Version 2.0 (the "License"); you may not
 // use this file except in compliance with the License. You may obtain a copy of
 // the License at
@@ -10,7 +12,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import FauxtonAPI from "../../core/api";
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 import { Modal } from "react-bootstrap";
@@ -143,13 +146,13 @@ var Pagination = React.createClass({
 // a super-simple replacement for window.confirm()
 var ConfirmationModal = React.createClass({
   propTypes: {
-    visible: React.PropTypes.bool.isRequired,
-    text: React.PropTypes.oneOfType([
-      React.PropTypes.string,
-      React.PropTypes.element
+    visible: PropTypes.bool.isRequired,
+    text: PropTypes.oneOfType([
+      PropTypes.string,
+      PropTypes.element
     ]).isRequired,
-    onClose: React.PropTypes.func.isRequired,
-    onSubmit: React.PropTypes.func.isRequired
+    onClose: PropTypes.func.isRequired,
+    onSubmit: PropTypes.func.isRequired
   },
 
   getDefaultProps: function () {
diff --git a/app/addons/fauxton/navigation/components/Brand.js b/app/addons/fauxton/navigation/components/Brand.js
index e8751b0..fba6997 100644
--- a/app/addons/fauxton/navigation/components/Brand.js
+++ b/app/addons/fauxton/navigation/components/Brand.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 
 import classNames from 'classnames';
@@ -30,7 +32,7 @@ const Brand = ({isMinimized}) => {
 };
 
 Brand.propTypes = {
-  isMinimized: React.PropTypes.bool.isRequired
+  isMinimized: PropTypes.bool.isRequired
 };
 
 export default Brand;
diff --git a/app/addons/fauxton/navigation/components/Burger.js b/app/addons/fauxton/navigation/components/Burger.js
index fc9c357..cbae67b 100644
--- a/app/addons/fauxton/navigation/components/Burger.js
+++ b/app/addons/fauxton/navigation/components/Burger.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 
 import classNames from 'classnames';
@@ -34,8 +36,8 @@ const Burger = ({toggleMenu, isMinimized}) => {
 };
 
 Burger.propTypes = {
-  toggleMenu: React.PropTypes.func.isRequired,
-  isMinimized: React.PropTypes.bool.isRequired
+  toggleMenu: PropTypes.func.isRequired,
+  isMinimized: PropTypes.bool.isRequired
 };
 
 export default Burger;
diff --git a/app/addons/fauxton/navigation/components/Footer.js b/app/addons/fauxton/navigation/components/Footer.js
index 72ddd01..3655134 100644
--- a/app/addons/fauxton/navigation/components/Footer.js
+++ b/app/addons/fauxton/navigation/components/Footer.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 
 const Footer = ({version}) => {
@@ -27,7 +29,7 @@ const Footer = ({version}) => {
 };
 
 Footer.propTypes = {
-  version: React.PropTypes.string
+  version: PropTypes.string
 };
 
 export default Footer;
diff --git a/app/addons/fauxton/navigation/components/LoginButton.js b/app/addons/fauxton/navigation/components/LoginButton.js
index 6493901..de265ea 100644
--- a/app/addons/fauxton/navigation/components/LoginButton.js
+++ b/app/addons/fauxton/navigation/components/LoginButton.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 
 import classNames from 'classnames';
@@ -36,7 +38,7 @@ const LoginButton = ({isMinimized}) => {
 };
 
 LoginButton.propTypes = {
-  isMinimized: React.PropTypes.bool.isRequired
+  isMinimized: PropTypes.bool.isRequired
 };
 
 export default LoginButton;
diff --git a/app/addons/fauxton/navigation/components/LogoutButton.js b/app/addons/fauxton/navigation/components/LogoutButton.js
index 037f172..80427f6 100644
--- a/app/addons/fauxton/navigation/components/LogoutButton.js
+++ b/app/addons/fauxton/navigation/components/LogoutButton.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 
 import classNames from 'classnames';
@@ -40,8 +42,8 @@ const LogoutButton = ({username, isMinimized}) => {
 };
 
 LogoutButton.propTypes = {
-  username: React.PropTypes.string,
-  isMinimized: React.PropTypes.bool.isRequired
+  username: PropTypes.string,
+  isMinimized: PropTypes.bool.isRequired
 };
 
 export default LogoutButton;
diff --git a/app/addons/fauxton/navigation/components/NavBar.js b/app/addons/fauxton/navigation/components/NavBar.js
index cbd9ff5..51cd135 100644
--- a/app/addons/fauxton/navigation/components/NavBar.js
+++ b/app/addons/fauxton/navigation/components/NavBar.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React, { Component } from 'react';
 
 import Footer from './Footer';
@@ -100,16 +102,16 @@ class NavBar extends Component {
 }
 
 NavBar.propTypes = {
-  activeLink: React.PropTypes.string,
-  isMinimized: React.PropTypes.bool.isRequired,
-  version: React.PropTypes.string,
-  username: React.PropTypes.string,
-  navLinks: React.PropTypes.array,
-  bottomNavLinks: React.PropTypes.array,
-  footerNavLinks: React.PropTypes.array,
-  isNavBarVisible: React.PropTypes.bool,
-  isLoginSectionVisible: React.PropTypes.bool.isRequired,
-  isLoginVisibleInsteadOfLogout: React.PropTypes.bool.isRequired
+  activeLink: PropTypes.string,
+  isMinimized: PropTypes.bool.isRequired,
+  version: PropTypes.string,
+  username: PropTypes.string,
+  navLinks: PropTypes.array,
+  bottomNavLinks: PropTypes.array,
+  footerNavLinks: PropTypes.array,
+  isNavBarVisible: PropTypes.bool,
+  isLoginSectionVisible: PropTypes.bool.isRequired,
+  isLoginVisibleInsteadOfLogout: PropTypes.bool.isRequired
 };
 
 export default NavBar;
diff --git a/app/addons/fauxton/navigation/components/NavLink.js b/app/addons/fauxton/navigation/components/NavLink.js
index 1cb6b7b..80ade76 100644
--- a/app/addons/fauxton/navigation/components/NavLink.js
+++ b/app/addons/fauxton/navigation/components/NavLink.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import classNames from 'classnames';
 
@@ -42,9 +44,9 @@ const NavLink = ({link, active, isMinimized}) => {
 };
 
 NavLink.propTypes = {
-  link: React.PropTypes.object.isRequired,
-  active: React.PropTypes.string,
-  isMinimized: React.PropTypes.bool.isRequired,
+  link: PropTypes.object.isRequired,
+  active: PropTypes.string,
+  isMinimized: PropTypes.bool.isRequired,
 };
 
 
diff --git a/app/addons/fauxton/notifications/notifications.js b/app/addons/fauxton/notifications/notifications.js
index 43f33e0..81c61ab 100644
--- a/app/addons/fauxton/notifications/notifications.js
+++ b/app/addons/fauxton/notifications/notifications.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from "react";
 import ReactDOM from "react-dom";
 import Actions from "./actions";
@@ -105,7 +107,7 @@ export const NotificationController = React.createClass({
 
 var GlobalNotifications = React.createClass({
   propTypes: {
-    notifications: React.PropTypes.array.isRequired
+    notifications: PropTypes.array.isRequired
   },
 
   componentDidMount () {
@@ -220,13 +222,13 @@ var GlobalNotifications = React.createClass({
 
 var Notification = React.createClass({
   propTypes: {
-    msg: React.PropTypes.string.isRequired,
-    onStartHide: React.PropTypes.func.isRequired,
-    onHideComplete: React.PropTypes.func.isRequired,
-    type: React.PropTypes.oneOf(['error', 'info', 'success']),
-    escape: React.PropTypes.bool,
-    isHiding: React.PropTypes.bool.isRequired,
-    visibleTime: React.PropTypes.number
+    msg: PropTypes.string.isRequired,
+    onStartHide: PropTypes.func.isRequired,
+    onHideComplete: PropTypes.func.isRequired,
+    type: PropTypes.oneOf(['error', 'info', 'success']),
+    escape: PropTypes.bool,
+    isHiding: PropTypes.bool.isRequired,
+    visibleTime: PropTypes.number
   },
 
   getDefaultProps () {
@@ -323,9 +325,9 @@ export const NotificationCenterButton = React.createClass({
 
 var NotificationCenterPanel = React.createClass({
   propTypes: {
-    visible: React.PropTypes.bool.isRequired,
-    filter: React.PropTypes.string.isRequired,
-    notifications: React.PropTypes.array.isRequired
+    visible: PropTypes.bool.isRequired,
+    filter: PropTypes.string.isRequired,
+    notifications: PropTypes.array.isRequired
   },
 
   getNotifications (items) {
@@ -449,7 +451,7 @@ var NotificationCenterPanel = React.createClass({
 
 var NotificationPanelRow = React.createClass({
   propTypes: {
-    item: React.PropTypes.object.isRequired
+    item: PropTypes.object.isRequired
   },
 
   clearNotification () {
@@ -537,7 +539,7 @@ export class PermanentNotification extends React.Component {
       </div>
     );
   }
-};
+}
 
 export default {
   NotificationController,
diff --git a/app/addons/permissions/components/Permissions.js b/app/addons/permissions/components/Permissions.js
index 49bc9c8..bb7f273 100644
--- a/app/addons/permissions/components/Permissions.js
+++ b/app/addons/permissions/components/Permissions.js
@@ -10,7 +10,9 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import React, { Component, PropTypes } from 'react';
+import PropTypes from 'prop-types';
+
+import React, { Component } from 'react';
 
 import PermissionsScreen  from './PermissionsScreen';
 
@@ -36,13 +38,13 @@ export default class Permissions extends Component {
       isLoading ? <LoadLines /> : <PermissionsScreen {...this.props} />
     );
   }
-};
+}
 
 Permissions.propTypes = {
   isLoading: PropTypes.bool.isRequired,
-  adminRoles: React.PropTypes.array.isRequired,
-  adminNames: React.PropTypes.array.isRequired,
-  memberNames: React.PropTypes.array.isRequired,
-  memberRoles: React.PropTypes.array.isRequired,
-  security: React.PropTypes.object.isRequired
+  adminRoles: PropTypes.array.isRequired,
+  adminNames: PropTypes.array.isRequired,
+  memberNames: PropTypes.array.isRequired,
+  memberRoles: PropTypes.array.isRequired,
+  security: PropTypes.object.isRequired
 };
diff --git a/app/addons/permissions/components/PermissionsItem.js b/app/addons/permissions/components/PermissionsItem.js
index c723219..1097b52 100644
--- a/app/addons/permissions/components/PermissionsItem.js
+++ b/app/addons/permissions/components/PermissionsItem.js
@@ -10,7 +10,9 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import React, { PropTypes } from 'react';
+import PropTypes from 'prop-types';
+
+import React from 'react';
 
 const PermissionsItem = ({removeItem, section, type, value}) => {
 
@@ -29,7 +31,7 @@ const PermissionsItem = ({removeItem, section, type, value}) => {
 };
 
 PermissionsItem.propTypes = {
-  value: React.PropTypes.string.isRequired,
+  value: PropTypes.string.isRequired,
   removeItem: PropTypes.func.isRequired,
 };
 
diff --git a/app/addons/permissions/components/PermissionsScreen.js b/app/addons/permissions/components/PermissionsScreen.js
index 82ff1b5..a118761 100644
--- a/app/addons/permissions/components/PermissionsScreen.js
+++ b/app/addons/permissions/components/PermissionsScreen.js
@@ -1,3 +1,5 @@
+import FauxtonAPI from '../../../core/api';
+
 // Licensed under the Apache License, Version 2.0 (the "License"); you may not
 // use this file except in compliance with the License. You may obtain a copy of
 // the License at
@@ -10,7 +12,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-import FauxtonAPI from '../../../core/api';
+import PropTypes from 'prop-types';
+
 import React, { Component } from 'react';
 
 import PermissionsSection from './PermissionsSection';
@@ -78,8 +81,8 @@ export default class PermissionsScreen extends Component {
     );
   }
 
-};
+}
 
 PermissionsScreen.propTypes = {
-  security: React.PropTypes.object.isRequired
+  security: PropTypes.object.isRequired
 };
diff --git a/app/addons/replication/components/activity.js b/app/addons/replication/components/activity.js
index fb9c75a..1641913 100644
--- a/app/addons/replication/components/activity.js
+++ b/app/addons/replication/components/activity.js
@@ -9,6 +9,8 @@
 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 // License for the specific language governing permissions and limitations under
 // the License.
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import {DeleteModal} from './modals';
 import {ReplicationTable} from './common-table';
@@ -101,14 +103,14 @@ export default class Activity extends React.Component {
 }
 
 Activity.propTypes = {
-  docs: React.PropTypes.array.isRequired,
-  filter: React.PropTypes.string.isRequired,
-  selectAllDocs: React.PropTypes.func.isRequired,
-  allDocsSelected: React.PropTypes.bool.isRequired,
-  someDocsSelected: React.PropTypes.bool.isRequired,
-  selectDoc: React.PropTypes.func.isRequired,
-  onFilterChange: React.PropTypes.func.isRequired,
-  deleteDocs: React.PropTypes.func.isRequired,
-  activitySort: React.PropTypes.object.isRequired,
-  changeActivitySort: React.PropTypes.func.isRequired
+  docs: PropTypes.array.isRequired,
+  filter: PropTypes.string.isRequired,
+  selectAllDocs: PropTypes.func.isRequired,
+  allDocsSelected: PropTypes.bool.isRequired,
+  someDocsSelected: PropTypes.bool.isRequired,
+  selectDoc: PropTypes.func.isRequired,
+  onFilterChange: PropTypes.func.isRequired,
+  deleteDocs: PropTypes.func.isRequired,
+  activitySort: PropTypes.object.isRequired,
+  changeActivitySort: PropTypes.func.isRequired
 };
diff --git a/app/addons/replication/components/common-activity.js b/app/addons/replication/components/common-activity.js
index 5faf29c..3b503fe 100644
--- a/app/addons/replication/components/common-activity.js
+++ b/app/addons/replication/components/common-activity.js
@@ -9,6 +9,8 @@
 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 // License for the specific language governing permissions and limitations under
 // the License.
+import PropTypes from 'prop-types';
+
 import React from 'react';
 
 export const ReplicationFilter = ({value, onChange}) => {
@@ -27,8 +29,8 @@ export const ReplicationFilter = ({value, onChange}) => {
 };
 
 ReplicationFilter.propTypes = {
-  value: React.PropTypes.string.isRequired,
-  onChange: React.PropTypes.func.isRequired
+  value: PropTypes.string.isRequired,
+  onChange: PropTypes.func.isRequired
 };
 
 export const ReplicationHeader = ({filter, onFilterChange}) => {
@@ -45,6 +47,6 @@ export const ReplicationHeader = ({filter, onFilterChange}) => {
 };
 
 ReplicationHeader.propTypes = {
-  filter: React.PropTypes.string.isRequired,
-  onFilterChange: React.PropTypes.func.isRequired
+  filter: PropTypes.string.isRequired,
+  onFilterChange: PropTypes.func.isRequired
 };
diff --git a/app/addons/replication/components/common-table.js b/app/addons/replication/components/common-table.js
index 0a8d622..80d0934 100644
--- a/app/addons/replication/components/common-table.js
+++ b/app/addons/replication/components/common-table.js
@@ -9,6 +9,8 @@
 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 // License for the specific language governing permissions and limitations under
 // the License.
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import {Table, Tooltip, OverlayTrigger} from "react-bootstrap";
 import moment from 'moment';
@@ -93,12 +95,12 @@ class RowStatus extends React.Component {
       </td>
     );
   }
-};
+}
 
 RowStatus.propTypes = {
-  statusTime: React.PropTypes.any,
-  status: React.PropTypes.string,
-  errorMsg: React.PropTypes.string.isRequired,
+  statusTime: PropTypes.any,
+  status: PropTypes.string,
+  errorMsg: PropTypes.string.isRequired,
 };
 
 RowStatus.defaultProps = {
@@ -150,11 +152,11 @@ const RowActions = ({onlyDeleteAction, _id, url, deleteDocs}) => {
 };
 
 RowActions.propTypes = {
-  _id: React.PropTypes.string.isRequired,
-  url: React.PropTypes.string,
-  error: React.PropTypes.bool.isRequired,
-  errorMsg: React.PropTypes.string.isRequired,
-  deleteDocs: React.PropTypes.func.isRequired
+  _id: PropTypes.string.isRequired,
+  url: PropTypes.string,
+  error: PropTypes.bool.isRequired,
+  errorMsg: PropTypes.string.isRequired,
+  deleteDocs: PropTypes.func.isRequired
 };
 
 const Row = ({
@@ -209,20 +211,20 @@ const Row = ({
 };
 
 Row.propTypes = {
-  _id: React.PropTypes.string.isRequired,
-  source: React.PropTypes.string.isRequired,
-  target: React.PropTypes.string.isRequired,
-  type: React.PropTypes.string.isRequired,
-  status: React.PropTypes.string,
-  url: React.PropTypes.string,
-  statusTime: React.PropTypes.object.isRequired,
-  startTime: React.PropTypes.object,
-  selected: React.PropTypes.bool.isRequired,
-  selectDoc: React.PropTypes.func.isRequired,
-  errorMsg: React.PropTypes.string.isRequired,
-  deleteDocs: React.PropTypes.func.isRequired,
-  onlyDeleteAction: React.PropTypes.bool.isRequired,
-  showStateRow: React.PropTypes.bool.isRequired
+  _id: PropTypes.string.isRequired,
+  source: PropTypes.string.isRequired,
+  target: PropTypes.string.isRequired,
+  type: PropTypes.string.isRequired,
+  status: PropTypes.string,
+  url: PropTypes.string,
+  statusTime: PropTypes.object.isRequired,
+  startTime: PropTypes.object,
+  selected: PropTypes.bool.isRequired,
+  selectDoc: PropTypes.func.isRequired,
+  errorMsg: PropTypes.string.isRequired,
+  deleteDocs: PropTypes.func.isRequired,
+  onlyDeleteAction: PropTypes.bool.isRequired,
+  showStateRow: PropTypes.bool.isRequired
 };
 
 const BulkSelectHeader = ({isSelected, deleteDocs, someDocsSelected, onCheck}) => {
@@ -244,10 +246,10 @@ const BulkSelectHeader = ({isSelected, deleteDocs, someDocsSelected, onCheck}) =
 };
 
 BulkSelectHeader.propTypes = {
-  isSelected: React.PropTypes.bool.isRequired,
-  someDocsSelected: React.PropTypes.bool.isRequired,
-  onCheck: React.PropTypes.func.isRequired,
-  deleteDocs: React.PropTypes.func.isRequired
+  isSelected: PropTypes.bool.isRequired,
+  someDocsSelected: PropTypes.bool.isRequired,
+  onCheck: PropTypes.func.isRequired,
+  deleteDocs: PropTypes.func.isRequired
 };
 
 const EmptyRow = ({msg}) => {
diff --git a/app/addons/replication/components/modals.js b/app/addons/replication/components/modals.js
index f978c79..73cfda5 100644
--- a/app/addons/replication/components/modals.js
+++ b/app/addons/replication/components/modals.js
@@ -9,6 +9,8 @@
 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 // License for the specific language governing permissions and limitations under
 // the License.
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import {Modal} from 'react-bootstrap';
 import Components from '../../components/react-components';
@@ -60,11 +62,11 @@ export const DeleteModal = ({
 };
 
 DeleteModal.propTypes = {
-  visible: React.PropTypes.bool.isRequired,
-  isReplicationDB: React.PropTypes.bool.isRequired,
-  onClick: React.PropTypes.func.isRequired,
-  onClose: React.PropTypes.func.isRequired,
-  multipleDocs: React.PropTypes.number.isRequired
+  visible: PropTypes.bool.isRequired,
+  isReplicationDB: PropTypes.bool.isRequired,
+  onClick: PropTypes.func.isRequired,
+  onClose: PropTypes.func.isRequired,
+  multipleDocs: PropTypes.number.isRequired
 };
 
 DeleteModal.defaultProps = {
@@ -103,10 +105,10 @@ export const ErrorModal = ({visible, onClose, errorMsg, status}) => {
 };
 
 ErrorModal.propTypes = {
-  visible: React.PropTypes.bool.isRequired,
-  onClick: React.PropTypes.func.isRequired,
-  onClose: React.PropTypes.func.isRequired,
-  errorMsg: React.PropTypes.string.isRequired
+  visible: PropTypes.bool.isRequired,
+  onClick: PropTypes.func.isRequired,
+  onClose: PropTypes.func.isRequired,
+  errorMsg: PropTypes.string.isRequired
 };
 
 export const ConflictModal = ({visible, docId, onClose, onClick}) => {
@@ -145,8 +147,8 @@ export const ConflictModal = ({visible, docId, onClose, onClick}) => {
 };
 
 ConflictModal.propTypes = {
-  visible: React.PropTypes.bool.isRequired,
-  onClick: React.PropTypes.func.isRequired,
-  onClose: React.PropTypes.func.isRequired,
-  docId: React.PropTypes.string.isRequired
+  visible: PropTypes.bool.isRequired,
+  onClick: PropTypes.func.isRequired,
+  onClose: PropTypes.func.isRequired,
+  docId: PropTypes.string.isRequired
 };
diff --git a/app/addons/replication/components/options.js b/app/addons/replication/components/options.js
index 138bf00..9690bac 100644
--- a/app/addons/replication/components/options.js
+++ b/app/addons/replication/components/options.js
@@ -9,6 +9,8 @@
 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 // License for the specific language governing permissions and limitations under
 // the License.
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import Constants from '../constants';
 import Components from '../../components/react-components';
@@ -40,8 +42,8 @@ const ReplicationType = ({value, onChange}) => {
 };
 
 ReplicationType.propTypes = {
-  value: React.PropTypes.string.isRequired,
-  onChange: React.PropTypes.func.isRequired
+  value: PropTypes.string.isRequired,
+  onChange: PropTypes.func.isRequired
 };
 
 const ReplicationDoc = ({value, onChange}) =>
@@ -63,8 +65,8 @@ const ReplicationDoc = ({value, onChange}) =>
 </div>;
 
 ReplicationDoc.propTypes = {
-  value: React.PropTypes.string.isRequired,
-  onChange: React.PropTypes.func.isRequired
+  value: PropTypes.string.isRequired,
+  onChange: PropTypes.func.isRequired
 };
 
 export class ReplicationOptions extends React.Component {
@@ -89,8 +91,8 @@ export class ReplicationOptions extends React.Component {
 }
 
 ReplicationOptions.propTypes = {
-  replicationDocName: React.PropTypes.string.isRequired,
-  replicationType: React.PropTypes.string.isRequired,
-  onDocChange: React.PropTypes.func.isRequired,
-  onTypeChange: React.PropTypes.func.isRequired
+  replicationDocName: PropTypes.string.isRequired,
+  replicationType: PropTypes.string.isRequired,
+  onDocChange: PropTypes.func.isRequired,
+  onTypeChange: PropTypes.func.isRequired
 };
diff --git a/app/addons/replication/components/replicate-activity.js b/app/addons/replication/components/replicate-activity.js
index 1196793..8f10f6f 100644
--- a/app/addons/replication/components/replicate-activity.js
+++ b/app/addons/replication/components/replicate-activity.js
@@ -9,6 +9,8 @@
 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 // License for the specific language governing permissions and limitations under
 // the License.
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import {DeleteModal} from './modals';
 import {ReplicationTable} from './common-table';
@@ -103,14 +105,14 @@ export default class Activity extends React.Component {
 }
 
 Activity.propTypes = {
-  docs: React.PropTypes.array.isRequired,
-  filter: React.PropTypes.string.isRequired,
-  selectAllDocs: React.PropTypes.func.isRequired,
-  allDocsSelected: React.PropTypes.bool.isRequired,
-  someDocsSelected: React.PropTypes.bool.isRequired,
-  selectDoc: React.PropTypes.func.isRequired,
-  onFilterChange: React.PropTypes.func.isRequired,
-  deleteDocs: React.PropTypes.func.isRequired,
-  activitySort: React.PropTypes.object.isRequired,
-  changeActivitySort: React.PropTypes.func.isRequired
+  docs: PropTypes.array.isRequired,
+  filter: PropTypes.string.isRequired,
+  selectAllDocs: PropTypes.func.isRequired,
+  allDocsSelected: PropTypes.bool.isRequired,
+  someDocsSelected: PropTypes.bool.isRequired,
+  selectDoc: PropTypes.func.isRequired,
+  onFilterChange: PropTypes.func.isRequired,
+  deleteDocs: PropTypes.func.isRequired,
+  activitySort: PropTypes.object.isRequired,
+  changeActivitySort: PropTypes.func.isRequired
 };
diff --git a/app/addons/replication/components/source.js b/app/addons/replication/components/source.js
index 0ac9f33..c4c7975 100644
--- a/app/addons/replication/components/source.js
+++ b/app/addons/replication/components/source.js
@@ -9,6 +9,8 @@
 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 // License for the specific language governing permissions and limitations under
 // the License.
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import Constants from '../constants';
 import Components from '../../components/react-components';
@@ -33,8 +35,8 @@ const RemoteSourceInput = ({onChange, value}) =>
   </div>;
 
 RemoteSourceInput.propTypes = {
-  value: React.PropTypes.string.isRequired,
-  onChange: React.PropTypes.func.isRequired
+  value: PropTypes.string.isRequired,
+  onChange: PropTypes.func.isRequired
 };
 
 const LocalSourceInput = ({value, onChange, databases}) => {
@@ -58,9 +60,9 @@ const LocalSourceInput = ({value, onChange, databases}) => {
 };
 
 LocalSourceInput.propTypes = {
-  value: React.PropTypes.string.isRequired,
-  databases: React.PropTypes.array.isRequired,
-  onChange: React.PropTypes.func.isRequired
+  value: PropTypes.string.isRequired,
+  databases: PropTypes.array.isRequired,
+  onChange: PropTypes.func.isRequired
 };
 
 const ReplicationSourceRow = ({replicationSource, databases, localSource, remoteSource, onChangeRemote, onChangeLocal}) => {
@@ -76,12 +78,12 @@ const ReplicationSourceRow = ({replicationSource, databases, localSource, remote
 };
 
 ReplicationSourceRow.propTypes = {
-  replicationSource: React.PropTypes.string.isRequired,
-  databases: React.PropTypes.array.isRequired,
-  localSource: React.PropTypes.string.isRequired,
-  remoteSource: React.PropTypes.string.isRequired,
-  onChangeRemote: React.PropTypes.func.isRequired,
-  onChangeLocal: React.PropTypes.func.isRequired
+  replicationSource: PropTypes.string.isRequired,
+  databases: PropTypes.array.isRequired,
+  localSource: PropTypes.string.isRequired,
+  remoteSource: PropTypes.string.isRequired,
+  onChangeRemote: PropTypes.func.isRequired,
+  onChangeLocal: PropTypes.func.isRequired
 };
 
 const replicationSourceSelectOptions = () => {
@@ -115,8 +117,8 @@ export const ReplicationSourceSelect = ({onChange, value}) => {
 };
 
 ReplicationSourceSelect.propTypes = {
-  value: React.PropTypes.string.isRequired,
-  onChange: React.PropTypes.func.isRequired
+  value: PropTypes.string.isRequired,
+  onChange: PropTypes.func.isRequired
 };
 
 export class ReplicationSource extends React.Component {
@@ -160,10 +162,10 @@ export class ReplicationSource extends React.Component {
 }
 
 ReplicationSource.propTypes = {
-  replicationSource: React.PropTypes.string.isRequired,
-  localSource: React.PropTypes.string.isRequired,
-  remoteSource: React.PropTypes.string.isRequired,
-  databases: React.PropTypes.array.isRequired,
-  onLocalSourceChange: React.PropTypes.func.isRequired,
-  onRemoteSourceChange: React.PropTypes.func.isRequired
+  replicationSource: PropTypes.string.isRequired,
+  localSource: PropTypes.string.isRequired,
+  remoteSource: PropTypes.string.isRequired,
+  databases: PropTypes.array.isRequired,
+  onLocalSourceChange: PropTypes.func.isRequired,
+  onRemoteSourceChange: PropTypes.func.isRequired
 };
diff --git a/app/addons/replication/components/submit.js b/app/addons/replication/components/submit.js
index e8031fe..97c744a 100644
--- a/app/addons/replication/components/submit.js
+++ b/app/addons/replication/components/submit.js
@@ -9,6 +9,8 @@
 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 // License for the specific language governing permissions and limitations under
 // the License.
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import Components from '../../components/react-components';
 
@@ -37,7 +39,7 @@ export const ReplicationSubmit = ({onClear, disabled, onClick}) =>
 
 
 ReplicationSubmit.propTypes = {
-  disabled: React.PropTypes.bool.isRequired,
-  onClick: React.PropTypes.func.isRequired,
-  onClear: React.PropTypes.func.isRequired
+  disabled: PropTypes.bool.isRequired,
+  onClick: PropTypes.func.isRequired,
+  onClear: PropTypes.func.isRequired
 };
diff --git a/app/addons/replication/components/target.js b/app/addons/replication/components/target.js
index 7d2004f..dc9584e 100644
--- a/app/addons/replication/components/target.js
+++ b/app/addons/replication/components/target.js
@@ -9,6 +9,8 @@
 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 // License for the specific language governing permissions and limitations under
 // the License.
+import PropTypes from 'prop-types';
+
 import React from 'react';
 import Constants from '../constants';
 import Components from '../../components/react-components';
@@ -49,8 +51,8 @@ const ReplicationTargetSelect = ({value, onChange}) => {
 };
 
 ReplicationTargetSelect.propTypes = {
-  value: React.PropTypes.string.isRequired,
-  onChange: React.PropTypes.func.isRequired
+  value: PropTypes.string.isRequired,
+  onChange: PropTypes.func.isRequired
 };
 
 const RemoteTargetReplicationRow = ({onChange, value, newRemote}) => {
@@ -69,8 +71,8 @@ const RemoteTargetReplicationRow = ({onChange, value, newRemote}) => {
 };
 
 RemoteTargetReplicationRow.propTypes = {
-  value: React.PropTypes.string.isRequired,
-  onChange: React.PropTypes.func.isRequired
+  value: PropTypes.string.isRequired,
+  onChange: PropTypes.func.isRequired
 };
 
 const ExistingLocalTargetReplicationRow = ({onChange, value, databases}) => {
@@ -89,9 +91,9 @@ const ExistingLocalTargetReplicationRow = ({onChange, value, databases}) => {
 };
 
 ExistingLocalTargetReplicationRow.propTypes = {
-  value: React.PropTypes.string.isRequired,
-  databases: React.PropTypes.array.isRequired,
-  onChange: React.PropTypes.func.isRequired
+  value: PropTypes.string.isRequired,
+  databases: PropTypes.array.isRequired,
+  onChange: PropTypes.func.isRequired
 };
 
 const NewLocalTargetReplicationRow = ({onChange, value}) =>
@@ -104,8 +106,8 @@ const NewLocalTargetReplicationRow = ({onChange, value}) =>
   />;
 
 NewLocalTargetReplicationRow.propTypes = {
-  value: React.PropTypes.string.isRequired,
-  onChange: React.PropTypes.func.isRequired
+  value: PropTypes.string.isRequired,
+  onChange: PropTypes.func.isRequired
 };
 
 const ReplicationTargetRow = ({
@@ -159,12 +161,12 @@ const ReplicationTargetRow = ({
 };
 
 ReplicationTargetRow.propTypes = {
-  databases: React.PropTypes.array.isRequired,
-  onLocalTargetChange: React.PropTypes.func.isRequired,
-  onRemoteTargetChange: React.PropTypes.func.isRequired,
-  remoteTarget: React.PropTypes.string.isRequired,
-  localTarget: React.PropTypes.string.isRequired,
-  replicationTarget: React.PropTypes.string.isRequired
+  databases: PropTypes.array.isRequired,
+  onLocalTargetChange: PropTypes.func.isRequired,
+  onRemoteTargetChange: PropTypes.func.isRequired,
+  remoteTarget: PropTypes.string.isRequired,
+  localTarget: PropTypes.string.isRequired,
+  replicationTarget: PropTypes.string.isRequired
 };
 
 export class ReplicationTarget extends React.Component {
@@ -199,11 +201,11 @@ export class ReplicationTarget extends React.Component {
 }
 
 ReplicationTarget.propTypes = {
-  databases: React.PropTypes.array.isRequired,
-  onTargetChange: React.PropTypes.func.isRequired,
-  onLocalTargetChange: React.PropTypes.func.isRequired,
-  onRemoteTargetChange: React.PropTypes.func.isRequired,
-  remoteTarget: React.PropTypes.string.isRequired,
-  localTarget: React.PropTypes.string.isRequired,
-  replicationTarget: React.PropTypes.string.isRequired
+  databases: PropTypes.array.isRequired,
+  onTargetChange: PropTypes.func.isRequired,
+  onLocalTargetChange: PropTypes.func.isRequired,
+  onRemoteTargetChange: PropTypes.func.isRequired,
+  remoteTarget: PropTypes.string.isRequired,
+  localTarget: PropTypes.string.isRequired,
+  replicationTarget: PropTypes.string.isRequired
 };
diff --git a/app/addons/verifyinstall/components.js b/app/addons/verifyinstall/components.js
index 47f7e72..909a12a 100644
--- a/app/addons/verifyinstall/components.js
+++ b/app/addons/verifyinstall/components.js
@@ -10,6 +10,8 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
+import PropTypes from 'prop-types';
+
 import React from "react";
 import Constants from "./constants";
 import Actions from "./actions";
@@ -58,8 +60,8 @@ const VerifyInstallController = React.createClass({
 
 var VerifyInstallButton = React.createClass({
   propTypes: {
-    verify: React.PropTypes.func.isRequired,
-    isVerifying: React.PropTypes.bool.isRequired
+    verify: PropTypes.func.isRequired,
+    isVerifying: PropTypes.bool.isRequired
   },
 
   render: function () {
@@ -74,7 +76,7 @@ var VerifyInstallButton = React.createClass({
 
 var VerifyInstallResults = React.createClass({
   propTypes: {
-    testResults: React.PropTypes.object.isRequired
+    testResults: PropTypes.object.isRequired
   },
 
   showTestResult: function (test) {

-- 
To stop receiving notification emails like this one, please contact
"commits@couchdb.apache.org" <commits@couchdb.apache.org>.

Mime
View raw message