import './style.css' import App from 'next/app' import NProgress from 'nprogress' import Router from 'next/router' import ProductSubnav from '../components/subnav' import MegaNav from '@hashicorp/react-mega-nav' import Footer from '../components/footer' import AlertBanner from '@hashicorp/react-alert-banner' import { ConsentManager, open } from '@hashicorp/react-consent-manager' import consentManagerConfig from '../lib/consent-manager-config' import bugsnagClient from '../lib/bugsnag' import anchorLinkAnalytics from '../lib/anchor-link-analytics' import alertBannerData, { ALERT_BANNER_ACTIVE } from '../data/alert-banner' import Error from './_error' import Head from 'next/head' import HashiHead from '@hashicorp/react-head' Router.events.on('routeChangeStart', NProgress.start) Router.events.on('routeChangeError', NProgress.done) Router.events.on('routeChangeComplete', (url) => { 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) } } return { pageProps } } componentDidMount() { anchorLinkAnalytics() } componentDidUpdate() { anchorLinkAnalytics() } render() { const { Component, pageProps } = this.props return ( {ALERT_BANNER_ACTIVE && ( )}