render() { const { children, disableSettings, hasMessages, flashMessages = [], removeFlashMessage, landingPage, showFooter = true, mediaBreakpoint, disableMenuButtonBehavior, isOnline, isSignedIn } = this.props; return ( <Fragment> <Helmet meta={[ { name: 'description', content: 'Learn to code with free online courses, programming ' + 'projects, and interview preparation for developer jobs.' }, { name: 'keywords', content: metaKeywords.join(', ') } ]} > <style>{fontawesome.dom.css()}</style> </Helmet> <Header disableMenuButtonBehavior={disableMenuButtonBehavior} disableSettings={disableSettings} mediaBreakpoint={mediaBreakpoint} /> <div className={`default-layout ${landingPage ? 'landing-page' : ''}`}> <OfflineWarning isOnline={isOnline} isSignedIn={isSignedIn} /> {hasMessages ? ( <Flash messages={flashMessages} onClose={removeFlashMessage} /> ) : null} {children} </div> {showFooter && <Footer />} </Fragment> ); }
const TemplateWrapper = ({ children, title, description, keywords = [] }) => ( <div> <Helmet htmlAttributes={{ lang: 'en' }} defaultTitle={title} meta={[ { name: 'description', content: description }, { name: 'keywords', content: keywords.join(), }, ]} > <link href="//fonts.googleapis.com/css?family=Sanchez|Source+Sans+Pro" rel="stylesheet" /> <link type="text/plain" rel="author" href="humans.txt" /> <style>{fontawesome.dom.css()}</style> </Helmet> {children()} </div> )
renderToHtml: async (render, Comp, meta) => { meta.css = FontAwesome.dom.css() return renderStylesToString(render(<Comp/>)) },