open-nomad/website/pages/_app.js

92 lines
3.4 KiB
JavaScript
Raw Normal View History

2020-02-06 23:45:31 +00:00
import './style.css'
import App from 'next/app'
import NProgress from 'nprogress'
import Router from 'next/router'
import ProductSubnav from '../components/subnav'
2020-03-26 00:01:29 +00:00
import MegaNav from '@hashicorp/react-mega-nav'
2020-02-06 23:45:31 +00:00
import Footer from '@hashicorp/react-footer'
2020-03-26 00:11:19 +00:00
import AlertBanner from '@hashicorp/react-alert-banner'
2020-02-06 23:45:31 +00:00
import { ConsentManager, open } from '@hashicorp/react-consent-manager'
import consentManagerConfig from '../lib/consent-manager-config'
import bugsnagClient from '../lib/bugsnag'
import Error from './_error'
2020-03-16 17:10:31 +00:00
import Head from 'next/head'
import HashiHead from '@hashicorp/react-head'
2020-02-06 23:45:31 +00:00
Router.events.on('routeChangeStart', NProgress.start)
Router.events.on('routeChangeError', NProgress.done)
2020-03-26 00:01:29 +00:00
Router.events.on('routeChangeComplete', (url) => {
2020-02-06 23:45:31 +00:00
setTimeout(() => window.analytics.page(url), 0)
NProgress.done()
})
// Bugsnag
const ErrorBoundary = bugsnagClient.getPlugin('react')
class NextApp extends App {
static async getInitialProps({ Component, ctx }) {
let pageProps = {}
if (Component.getInitialProps) {
pageProps = await Component.getInitialProps(ctx)
} else if (Component.isMDXComponent) {
// fix for https://github.com/mdx-js/mdx/issues/382
const mdxLayoutComponent = Component({}).props.originalType
if (mdxLayoutComponent.getInitialProps) {
pageProps = await mdxLayoutComponent.getInitialProps(ctx)
}
}
2020-03-16 17:10:31 +00:00
return { pageProps }
2020-02-06 23:45:31 +00:00
}
render() {
2020-03-16 17:10:31 +00:00
const { Component, pageProps } = this.props
2020-02-06 23:45:31 +00:00
return (
<ErrorBoundary FallbackComponent={Error}>
2020-03-16 17:10:31 +00:00
<HashiHead
is={Head}
title="Nomad by HashiCorp"
siteName="Nomad by HashiCorp"
description="Nomad is a highly available, distributed, data-center aware cluster and application scheduler designed to support the modern datacenter with support for long-running services, batch jobs, and much more."
image="https://www.nomadproject.io/img/og-image.png"
stylesheet={[
{ href: '/css/nprogress.css' },
{
href:
2020-03-26 00:01:29 +00:00
'https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700&display=swap',
},
2020-03-16 17:10:31 +00:00
]}
icon={[{ href: '/favicon.ico' }]}
preload={[
{ href: '/fonts/klavika/medium.woff2', as: 'font' },
{ href: '/fonts/gilmer/light.woff2', as: 'font' },
{ href: '/fonts/gilmer/regular.woff2', as: 'font' },
{ href: '/fonts/gilmer/medium.woff2', as: 'font' },
{ href: '/fonts/gilmer/bold.woff2', as: 'font' },
{ href: '/fonts/metro-sans/book.woff2', as: 'font' },
{ href: '/fonts/metro-sans/regular.woff2', as: 'font' },
{ href: '/fonts/metro-sans/semi-bold.woff2', as: 'font' },
{ href: '/fonts/metro-sans/bold.woff2', as: 'font' },
2020-03-26 00:01:29 +00:00
{ href: '/fonts/dejavu/mono.woff2', as: 'font' },
2020-03-16 17:10:31 +00:00
]}
/>
2020-03-26 00:11:19 +00:00
<AlertBanner
2020-04-30 22:25:43 +00:00
url="https://www.hashicorp.com/webinars/nomad-virtual-day-cloud-bursting-with-nomad-and-consul-betterhelp-customer-story/"
tag="Livestream"
2020-03-26 00:11:19 +00:00
theme="nomad"
2020-04-30 22:25:43 +00:00
text="Nomad Virtual Day: cloud bursting use case, customer talk from BetterHelp and more. Register now."
2020-03-26 00:11:19 +00:00
/>
2020-02-06 23:45:31 +00:00
<MegaNav product="Nomad" />
2020-02-14 15:11:37 +00:00
<ProductSubnav />
2020-02-06 23:45:31 +00:00
<Component {...pageProps} />
<Footer openConsentManager={open} />
<ConsentManager {...consentManagerConfig} />
</ErrorBoundary>
)
}
}
export default NextApp