2020-04-06 20:27:35 +00:00
import './style.css'
2020-09-10 17:32:06 +00:00
import '@hashicorp/nextjs-scripts/lib/nprogress/style.css'
2020-04-06 20:27:35 +00:00
import Router from 'next/router'
2020-09-10 17:32:06 +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'
import HashiHead from '@hashicorp/react-head'
2020-10-09 15:48:21 +00:00
import HashiStackMenu from '@hashicorp/react-hashi-stack-menu'
2020-04-28 17:53:30 +00:00
import AlertBanner from '@hashicorp/react-alert-banner'
2020-09-10 17:32:06 +00:00
import Footer from '../components/footer'
import ProductSubnav from '../components/subnav'
2020-04-28 17:53:30 +00:00
import alertBannerData , { ALERT _BANNER _ACTIVE } from '../data/alert-banner'
2020-04-06 20:27:35 +00:00
import Error from './_error'
2020-09-10 17:32:06 +00:00
NProgress ( { Router } )
const { ConsentManager , openConsentManager } = createConsentManager ( {
preset : 'oss' ,
2020-04-06 20:27:35 +00:00
} )
2020-09-10 17:32:06 +00:00
function App ( { Component , pageProps } ) {
useAnchorLinkAnalytics ( )
return (
< ErrorBoundary FallbackComponent = { Error } >
< HashiHead
is = { Head }
title = "Consul by HashiCorp"
siteName = "Consul by HashiCorp"
description = "Consul is a service networking solution to automate network configurations, discover services, and enable secure connectivity across any cloud or runtime."
image = "https://www.consul.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' } ,
] }
>
< meta
name = "og:title"
property = "og:title"
content = "Consul by HashiCorp"
/ >
< / H a s h i H e a d >
{ ALERT _BANNER _ACTIVE && (
< AlertBanner { ... alertBannerData } theme = "consul" / >
) }
2020-10-09 15:48:21 +00:00
< HashiStackMenu / >
2020-09-10 17:32:06 +00:00
< ProductSubnav / >
< div className = "content" >
< Component { ... pageProps } / >
< / d i v >
< Footer openConsentManager = { openConsentManager } / >
< ConsentManager / >
< / E r r o r B o u n d a r y >
)
}
2020-04-06 20:27:35 +00:00
2020-09-10 17:32:06 +00:00
App . getInitialProps = async function ( { Component , ctx } ) {
let pageProps = { }
2020-04-06 20:27:35 +00:00
2020-09-10 17:32:06 +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-04-06 20:27:35 +00:00
}
}
2020-09-10 17:32:06 +00:00
return { pageProps }
2020-04-06 20:27:35 +00:00
}
2020-09-10 17:32:06 +00:00
export default App