2020-02-06 23:45:31 +00:00
import './style.css'
2020-05-06 23:41:32 +00:00
import '@hashicorp/nextjs-scripts/lib/nprogress/style.css'
2020-02-06 23:45:31 +00:00
import Router from 'next/router'
2020-05-06 23:41:32 +00:00
import Head from 'next/head'
import NProgress from '@hashicorp/nextjs-scripts/lib/nprogress'
import { ErrorBoundary } from '@hashicorp/nextjs-scripts/lib/bugsnag'
import createConsentManager from '@hashicorp/nextjs-scripts/lib/consent-manager'
import useAnchorLinkAnalytics from '@hashicorp/nextjs-scripts/lib/anchor-link-analytics'
2020-03-26 00:01:29 +00:00
import MegaNav from '@hashicorp/react-mega-nav'
2020-03-26 00:11:19 +00:00
import AlertBanner from '@hashicorp/react-alert-banner'
2020-03-16 17:10:31 +00:00
import HashiHead from '@hashicorp/react-head'
2020-06-01 21:48:25 +00:00
import Footer from 'components/footer'
import ProductSubnav from 'components/subnav'
2020-05-06 23:41:32 +00:00
import Error from './_error'
2020-06-01 21:48:25 +00:00
import alertBannerData , { ALERT _BANNER _ACTIVE } from 'data/alert-banner'
2020-02-06 23:45:31 +00:00
2020-05-06 23:41:32 +00:00
NProgress ( { Router } )
const { ConsentManager , openConsentManager } = createConsentManager ( {
preset : 'oss' ,
2020-02-06 23:45:31 +00:00
} )
2020-05-06 23:41:32 +00:00
function App ( { Component , pageProps } ) {
useAnchorLinkAnalytics ( )
2020-02-06 23:45:31 +00:00
2020-05-06 23:41:32 +00:00
return (
< ErrorBoundary FallbackComponent = { Error } >
< 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"
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' } ,
{ href : '/fonts/dejavu/mono.woff2' , as : 'font' } ,
] }
/ >
{ ALERT _BANNER _ACTIVE && (
< AlertBanner { ... alertBannerData } theme = "nomad" / >
) }
< MegaNav product = "Nomad" / >
< ProductSubnav / >
< div className = { ` content ${ ALERT _BANNER _ACTIVE ? ' banner' : '' } ` } >
< Component { ... pageProps } / >
< / d i v >
< Footer openConsentManager = { openConsentManager } / >
< ConsentManager / >
< / E r r o r B o u n d a r y >
)
}
2020-02-06 23:45:31 +00:00
2020-05-06 23:41:32 +00:00
App . getInitialProps = async ( { Component , ctx } ) => {
let pageProps = { }
2020-02-06 23:45:31 +00:00
2020-05-06 23:41:32 +00:00
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-02-06 23:45:31 +00:00
}
2020-05-06 23:41:32 +00:00
return { pageProps }
2020-02-06 23:45:31 +00:00
}
2020-05-06 23:41:32 +00:00
export default App