diff --git a/.gitignore b/.gitignore
index 4614796c..01948aa5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -165,3 +165,4 @@ prototypes/*/package-lock.json
_env*
keys*
+/packages/*/public/index.html
diff --git a/packages/icons/package.json b/packages/icons/package.json
index 9fe5ac59..5a55ed33 100644
--- a/packages/icons/package.json
+++ b/packages/icons/package.json
@@ -31,7 +31,7 @@
"babel-preset-joyent-portal": "^7.0.1",
"eslint": "^4.19.1",
"eslint-config-joyent-portal": "^3.3.1",
- "joyent-react-scripts": "^8.0.3",
+ "joyent-react-scripts": "^8.2.0",
"react": "^16.3.1",
"redrun": "^6.0.2"
},
diff --git a/packages/logos/package.json b/packages/logos/package.json
index d1a72ca4..e22ac4c4 100644
--- a/packages/logos/package.json
+++ b/packages/logos/package.json
@@ -31,7 +31,7 @@
"execa": "^0.10.0",
"globby": "^8.0.1",
"htmltojsx": "^0.3.0",
- "joyent-react-scripts": "^8.0.3",
+ "joyent-react-scripts": "^8.2.0",
"mz": "^2.7.0",
"react": "^16.3.1",
"redrun": "^6.0.2"
diff --git a/packages/my-joy-images/package.json b/packages/my-joy-images/package.json
index a8e52604..ac66a89c 100644
--- a/packages/my-joy-images/package.json
+++ b/packages/my-joy-images/package.json
@@ -33,7 +33,7 @@
"force-array": "^3.1.0",
"fuse.js": "^3.2.0",
"hapi-render-react": "^2.5.2",
- "hapi-render-react-joyent-document": "^5.0.0",
+ "hapi-render-react-joyent-document": "^7.0.1",
"inert": "^5.1.0",
"joyent-logo-assets": "^1.1.0",
"joyent-react-styled-flexboxgrid": "^2.2.3",
@@ -52,6 +52,7 @@
"react": "^16.3.1",
"react-apollo": "^2.1.2",
"react-dom": "^16.3.1",
+ "react-helmet-async": "0.0.5",
"react-redux": "^5.0.7",
"react-redux-values": "^1.1.2",
"react-router": "^4.2.0",
@@ -73,7 +74,7 @@
"eslint-config-joyent-portal": "^3.3.1",
"jest-image-snapshot": "^2.4.0",
"jest-styled-components": "^5.0.1",
- "joyent-react-scripts": "^8.0.3",
+ "joyent-react-scripts": "^8.2.0",
"react-screenshot-renderer": "^1.1.2",
"react-test-renderer": "^16.3.1",
"redrun": "^6.0.2"
diff --git a/packages/my-joy-images/src/_document.js b/packages/my-joy-images/src/_document.js
index 47e8cb3e..a0feb4c0 100644
--- a/packages/my-joy-images/src/_document.js
+++ b/packages/my-joy-images/src/_document.js
@@ -51,6 +51,7 @@ const getState = request => {
module.exports = Document({
namespace: 'images/',
assets,
+ Html: require('./html'),
indexFile,
getState
});
diff --git a/packages/my-joy-images/src/app.js b/packages/my-joy-images/src/app.js
index cf61df7e..d04d3c29 100644
--- a/packages/my-joy-images/src/app.js
+++ b/packages/my-joy-images/src/app.js
@@ -1,10 +1,14 @@
import React from 'react';
+import Helmet from 'react-helmet-async';
import { RootContainer } from 'joyent-ui-toolkit';
import Routes from '@root/routes';
export default () => (
+
+ Images
+
);
diff --git a/packages/my-joy-images/src/html.js b/packages/my-joy-images/src/html.js
new file mode 100644
index 00000000..d6a0c1ca
--- /dev/null
+++ b/packages/my-joy-images/src/html.js
@@ -0,0 +1,20 @@
+const React = require('react');
+
+module.exports = ({ htmlAttrs = {}, bodyAttrs = {}, head = [], children = null }) => (
+
+
+
+
+
+
+
+ {head}
+
+
+
+
+ {children}
+
+
+
+);
diff --git a/packages/my-joy-instances/package.json b/packages/my-joy-instances/package.json
index 52a40c84..8f1b3a12 100644
--- a/packages/my-joy-instances/package.json
+++ b/packages/my-joy-instances/package.json
@@ -34,7 +34,7 @@
"exenv": "^1.2.2",
"fuse.js": "^3.2.0",
"hapi-render-react": "^2.5.2",
- "hapi-render-react-joyent-document": "^5.0.0",
+ "hapi-render-react-joyent-document": "^7.0.1",
"inert": "^5.1.0",
"joyent-logo-assets": "^1.1.0",
"joyent-manifest-editor": "^1.4.0",
@@ -64,6 +64,7 @@
"react": "^16.3.1",
"react-apollo": "^2.1.2",
"react-dom": "^16.3.1",
+ "react-helmet-async": "0.0.5",
"react-redux": "^5.0.7",
"react-redux-values": "^1.1.2",
"react-router": "^4.2.0",
@@ -84,7 +85,7 @@
"eslint-config-joyent-portal": "^3.3.1",
"jest-image-snapshot": "^2.4.0",
"jest-styled-components": "^5.0.1",
- "joyent-react-scripts": "^8.0.3",
+ "joyent-react-scripts": "^8.2.0",
"react-screenshot-renderer": "^1.1.2",
"react-test-renderer": "^16.3.1",
"redrun": "^6.0.2"
diff --git a/packages/my-joy-instances/public/index.html b/packages/my-joy-instances/public/index.html
deleted file mode 100644
index eb081571..00000000
--- a/packages/my-joy-instances/public/index.html
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- My Joyent β
-
-
-
-
-
-
-
diff --git a/packages/my-joy-instances/src/_document.js b/packages/my-joy-instances/src/_document.js
index 3d9dd127..151333fd 100644
--- a/packages/my-joy-instances/src/_document.js
+++ b/packages/my-joy-instances/src/_document.js
@@ -7,7 +7,6 @@ const { theme } = require('joyent-ui-toolkit');
const { default: createClient } = require('./state/apollo-client');
const { default: createStore } = require('./state/redux-store');
-const indexFile = path.join(__dirname, '../../build/index.html');
const assets = require('../../build/asset-manifest.json');
const { NODE_ENV = 'development' } = process.env;
@@ -51,6 +50,6 @@ const getState = request => {
module.exports = Document({
namespace: 'instances/',
assets,
- indexFile,
+ Html: require('./html'),
getState
});
diff --git a/packages/my-joy-instances/src/app.js b/packages/my-joy-instances/src/app.js
index cf61df7e..80f26679 100644
--- a/packages/my-joy-instances/src/app.js
+++ b/packages/my-joy-instances/src/app.js
@@ -1,10 +1,14 @@
import React from 'react';
+import Helmet from 'react-helmet-async';
import { RootContainer } from 'joyent-ui-toolkit';
import Routes from '@root/routes';
export default () => (
+
+ Instances
+
);
diff --git a/packages/my-joy-instances/src/html.js b/packages/my-joy-instances/src/html.js
new file mode 100644
index 00000000..d6a0c1ca
--- /dev/null
+++ b/packages/my-joy-instances/src/html.js
@@ -0,0 +1,20 @@
+const React = require('react');
+
+module.exports = ({ htmlAttrs = {}, bodyAttrs = {}, head = [], children = null }) => (
+
+
+
+
+
+
+
+ {head}
+
+
+
+
+ {children}
+
+
+
+);
diff --git a/packages/my-joy-instances/src/index.js b/packages/my-joy-instances/src/index.js
index 34c08d5c..0b1ebbd5 100644
--- a/packages/my-joy-instances/src/index.js
+++ b/packages/my-joy-instances/src/index.js
@@ -1,5 +1,6 @@
import React from 'react';
import ReactDOM from 'react-dom';
+import { HelmetProvider } from 'react-helmet-async';
import { ThemeProvider } from 'styled-components';
import { Provider as ReduxProvider } from 'react-redux';
import { ApolloProvider } from 'react-apollo';
@@ -22,7 +23,9 @@ ReactDOM.hydrate(
-
+
+
+
diff --git a/packages/my-joy-navigation/package.json b/packages/my-joy-navigation/package.json
index eb655ad3..ebf418ee 100644
--- a/packages/my-joy-navigation/package.json
+++ b/packages/my-joy-navigation/package.json
@@ -49,7 +49,7 @@
"babel-preset-joyent-portal": "^7.0.1",
"eslint": "^4.19.1",
"eslint-config-joyent-portal": "^3.3.1",
- "joyent-react-scripts": "^8.0.3",
+ "joyent-react-scripts": "^8.2.0",
"redrun": "^6.0.2"
}
}
diff --git a/packages/ui-toolkit/package.json b/packages/ui-toolkit/package.json
index 697a193d..90dc781b 100644
--- a/packages/ui-toolkit/package.json
+++ b/packages/ui-toolkit/package.json
@@ -58,7 +58,7 @@
"eslint": "^4.19.1",
"eslint-config-joyent-portal": "^3.3.1",
"jest-styled-components": "^5.0.1",
- "joyent-react-scripts": "^8.0.3",
+ "joyent-react-scripts": "^8.2.0",
"react": "^16.3.1",
"react-docgen": "^3.0.0-beta8",
"react-docgen-displayname-handler": "^1.0.1",
diff --git a/prototypes/cra-boilerplate/package.json b/prototypes/cra-boilerplate/package.json
index 81fcf08e..8b7e5ab7 100644
--- a/prototypes/cra-boilerplate/package.json
+++ b/prototypes/cra-boilerplate/package.json
@@ -31,7 +31,7 @@
"babel-preset-joyent-portal": "^7.0.0",
"eslint": "^4.11.0",
"eslint-config-joyent-portal": "^3.2.0",
- "joyent-react-scripts": "^8.0.2",
+ "joyent-react-scripts": "^8.2.0",
"stylelint": "^8.4.0",
"stylelint-config-joyent-portal": "^2.0.1"
}
diff --git a/yarn.lock b/yarn.lock
index d64cb0d9..21163e10 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3742,7 +3742,7 @@ duplexer@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
-duplexify@^3.4.2, duplexify@^3.5.3:
+duplexify@^3.4.2, duplexify@^3.5.3, duplexify@^3.5.4:
version "3.5.4"
resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.4.tgz#4bb46c1796eabebeec4ca9a2e66b808cb7a3d8b4"
dependencies:
@@ -5205,11 +5205,14 @@ handlebars@^4.0.2, handlebars@^4.0.3:
optionalDependencies:
uglify-js "^2.6"
-hapi-render-react-joyent-document@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/hapi-render-react-joyent-document/-/hapi-render-react-joyent-document-5.0.0.tgz#3e182a1afdae8e1874d322caed3d883bfd85efde"
+hapi-render-react-joyent-document@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/hapi-render-react-joyent-document/-/hapi-render-react-joyent-document-7.0.1.tgz#3c7846547f7bcdab668c5d94b748a3d769828ac6"
dependencies:
- through2 "^2.0.3"
+ duplexify "^3.5.4"
+ pumpify "^1.4.0"
+ react-helmet-async "0.0.5"
+ string-to-stream "^1.1.0"
hapi-render-react@^2.5.2:
version "2.5.2"
@@ -6527,13 +6530,14 @@ joyent-manifest-editor@^1.4.0:
prop-types "^15.6.0"
react-codemirror "^1.0.0"
-joyent-react-scripts@^8.0.3:
- version "8.0.3"
- resolved "https://registry.yarnpkg.com/joyent-react-scripts/-/joyent-react-scripts-8.0.3.tgz#0fa8684c924dbc582711c948167234278d925c5f"
+joyent-react-scripts@^8.2.0:
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/joyent-react-scripts/-/joyent-react-scripts-8.2.0.tgz#fb6d96e59775945d45264577e379c108a06b8cc6"
dependencies:
apr-for-each "^3.0.3"
apr-main "^4.0.3"
babel-minify-webpack-plugin "^0.3.1"
+ babel-register "^6.26.0"
duplicate-package-checker-webpack-plugin "^2.1.0"
execa "^0.10.0"
graphql "^0.13.1"
@@ -8682,7 +8686,7 @@ pump@^2.0.0, pump@^2.0.1:
end-of-stream "^1.1.0"
once "^1.3.1"
-pumpify@^1.3.3:
+pumpify@^1.3.3, pumpify@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.4.0.tgz#80b7c5df7e24153d03f0e7ac8a05a5d068bd07fb"
dependencies:
@@ -8947,6 +8951,15 @@ react-group@^1.0.5:
dependencies:
prop-types "^15.5.10"
+react-helmet-async@0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-0.0.5.tgz#c751aa6caba95b60d31eff9ff1283cb6fa284dba"
+ dependencies:
+ deep-equal "^1.0.1"
+ invariant "^2.2.2"
+ prop-types "^15.6.0"
+ shallowequal "^1.0.2"
+
react-icon-base@2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/react-icon-base/-/react-icon-base-2.1.0.tgz#a196e33fdf1e7aaa1fda3aefbb68bdad9e82a79d"
@@ -9207,7 +9220,7 @@ read-pkg@^3.0.0:
normalize-package-data "^2.3.2"
path-type "^3.0.0"
-"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3:
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.0, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3:
version "2.3.6"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
dependencies:
@@ -9932,6 +9945,10 @@ sha.js@^2.4.0, sha.js@^2.4.8:
inherits "^2.0.1"
safe-buffer "^5.0.1"
+shallowequal@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.0.2.tgz#1561dbdefb8c01408100319085764da3fcf83f8f"
+
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
@@ -10306,6 +10323,13 @@ string-length@^1.0.1:
dependencies:
strip-ansi "^3.0.0"
+string-to-stream@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string-to-stream/-/string-to-stream-1.1.1.tgz#aba78f73e70661b130ee3e1c0192be4fef6cb599"
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.1.0"
+
string-width@^1.0.1, string-width@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
@@ -10695,7 +10719,7 @@ throat@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a"
-through2@^2.0.0, through2@^2.0.2, through2@^2.0.3:
+through2@^2.0.0, through2@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
dependencies: