/* eslint-disable react/no-danger */ import React from 'react'; import PropTypes from 'prop-types'; import DocumentTitle from 'react-document-title'; import { prefixLink } from 'gatsby/dist/isomorphic/gatsby-helpers'; import favicon from './design/homepage/storybook-icon.png'; const BUILD_TIME = new Date().getTime(); const HTML = props => { const title = DocumentTitle.rewind(); let css; if (process.env.NODE_ENV === 'production') { // eslint-disable-next-line css = <style dangerouslySetInnerHTML={{ __html: require('!raw!./public/styles.css') }} />; } const searchScript = [ <link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />, <script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js" />, <script type="text/javascript" dangerouslySetInnerHTML={{ __html: `docsearch({ apiKey: 'a4f7f972f1d8f99a66e237e7fd2e489f', indexName: 'storybook-js', inputSelector: '#search', debug: false // Set debug to true if you want to inspect the dropdown });`, }} />, ]; return ( <html lang="en"> <head> <meta charSet="utf-8" /> <meta httpEquiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>{title}</title> <link rel="icon" href={favicon} type="image/x-icon" /> {css} </head> <body> <div id="react-mount" dangerouslySetInnerHTML={{ __html: props.body }} /> <script src={prefixLink(`/bundle.js?t=${BUILD_TIME}`)} /> {searchScript} </body> </html> ); }; HTML.displayName = 'HTML'; HTML.propTypes = { body: PropTypes.string, }; HTML.defaultProps = { body: '', }; export default HTML;