diff --git a/v2/lib/theme/Docs/index.js b/v2/lib/theme/Docs/index.js
index 6e9f0d9be4..4e311f4cde 100644
--- a/v2/lib/theme/Docs/index.js
+++ b/v2/lib/theme/Docs/index.js
@@ -2,8 +2,11 @@
import React from 'react';
import {Link} from 'react-router-dom';
import Helmet from 'react-helmet';
-import styles from './styles.css';
+
import Layout from '@theme/Layout'; // eslint-disable-line
+import DocsPaginator from '@theme/DocsPaginator'; // eslint-disable-line
+
+import styles from './styles.css';
export default class Docs extends React.Component {
renderSidebar(metadata, docsSidebars, docsMetadatas) {
@@ -62,22 +65,8 @@ export default class Docs extends React.Component {
{version && }
{this.renderSidebar(metadata, docsSidebars, docsMetadatas)}
-
- {metadata.previous &&
- docsMetadatas[metadata.previous] && (
-
- ← {metadata.previous_title}
-
- )}
- {' ⚫️ '}
- {metadata.next &&
- docsMetadatas[metadata.next] && (
-
- {metadata.next_title} →
-
- )}
-
{this.props.children}
+
);
}
diff --git a/v2/lib/theme/DocsPaginator/index.js b/v2/lib/theme/DocsPaginator/index.js
new file mode 100644
index 0000000000..d220c52df2
--- /dev/null
+++ b/v2/lib/theme/DocsPaginator/index.js
@@ -0,0 +1,24 @@
+import React from 'react';
+import {Link} from 'react-router-dom';
+
+export default class DocsPaginator extends React.Component {
+ render() {
+ const {docsMetadatas, metadata} = this.props;
+ return (
+
+ {metadata.previous &&
+ docsMetadatas[metadata.previous] && (
+
+ ← {metadata.previous_title}
+
+ )}
+ {metadata.next &&
+ docsMetadatas[metadata.next] && (
+
+ {metadata.next_title} →
+
+ )}
+
+ );
+ }
+}
diff --git a/v2/lib/theme/Footer/index.js b/v2/lib/theme/Footer/index.js
new file mode 100644
index 0000000000..09b6ecea5c
--- /dev/null
+++ b/v2/lib/theme/Footer/index.js
@@ -0,0 +1,25 @@
+import React from 'react';
+import {Link} from 'react-router-dom';
+
+import styles from './styles.css';
+
+function Footer(props) {
+ const {pagesMetadatas, docsMetadatas, location} = props;
+ const docsFlatMetadatas = Object.values(docsMetadatas);
+ const routeLinks = [...pagesMetadatas, ...docsFlatMetadatas].map(
+ data =>
+ data.permalink !== location.pathname && (
+
+ {data.permalink}
+
+ ),
+ );
+
+ return (
+
+ );
+}
+
+export default Footer;
diff --git a/v2/lib/theme/Footer/styles.css b/v2/lib/theme/Footer/styles.css
new file mode 100644
index 0000000000..cc5696cbb0
--- /dev/null
+++ b/v2/lib/theme/Footer/styles.css
@@ -0,0 +1,39 @@
+.footer {
+ color: #777;
+ margin-top: 30px;
+ padding: 10px 15px;
+ height: 20px;
+ text-align: center;
+ border-top: 1px solid #e6e6e6;
+}
+
+.routeLinks {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ position: absolute;
+ right: 0;
+ left: 0;
+}
+
+.routeLinks li {
+ display: inline;
+}
+
+.routeLinks li a {
+ color: inherit;
+ margin: 3px;
+ padding: 3px 7px;
+ text-decoration: none;
+ border: 1px solid transparent;
+ border-radius: 3px;
+}
+
+.routeLinks li a.selected,
+.routeLinks li a:hover {
+ border-color: rgba(175, 47, 47, 0.1);
+}
+
+.routeLinks li a.selected {
+ border-color: rgba(175, 47, 47, 0.2);
+}
diff --git a/v2/lib/theme/Layout/index.js b/v2/lib/theme/Layout/index.js
index d35f93c6a8..dcec995176 100644
--- a/v2/lib/theme/Layout/index.js
+++ b/v2/lib/theme/Layout/index.js
@@ -1,6 +1,5 @@
import React from 'react';
-import {Link} from 'react-router-dom';
-import styles from './styles.css';
+import Footer from '@theme/Footer'; // eslint-disable-line
/* eslint-disable react/prefer-stateless-function */
export default class Layout extends React.Component {
@@ -11,21 +10,14 @@ export default class Layout extends React.Component {
docsMetadatas = {},
location,
} = this.props;
- const docsFlatMetadatas = Object.values(docsMetadatas);
- const routeLinks = [...pagesMetadatas, ...docsFlatMetadatas].map(
- data =>
- data.permalink !== location.pathname && (
-
- {data.permalink}
-
- ),
- );
return (
);
}
diff --git a/v2/lib/theme/Layout/styles.css b/v2/lib/theme/Layout/styles.css
deleted file mode 100644
index 735c34ca39..0000000000
--- a/v2/lib/theme/Layout/styles.css
+++ /dev/null
@@ -1,39 +0,0 @@
-.footer {
- color: #777;
- margin-top: 30px;
- padding: 10px 15px;
- height: 20px;
- text-align: center;
- border-top: 1px solid #e6e6e6;
-}
-
-.routeLinks {
- margin: 0;
- padding: 0;
- list-style: none;
- position: absolute;
- right: 0;
- left: 0;
-}
-
-.routeLinks li {
- display: inline;
-}
-
-.routeLinks li a {
- color: inherit;
- margin: 3px;
- padding: 3px 7px;
- text-decoration: none;
- border: 1px solid transparent;
- border-radius: 3px;
-}
-
-.routeLinks li a.selected,
-.routeLinks li a:hover {
- border-color: rgba(175, 47, 47, 0.1);
-}
-
-.routeLinks li a.selected {
- border-color: rgba(175, 47, 47, 0.2);
-}
\ No newline at end of file