open-consul/website/pages/_app.js
Alex Carpenter 0eb6334b2d
Homepage use case redesign (#11728)
* init homepage

* adds tutorials

* update subnav

* adds intro background

* add offerings

* adds in practice cta

* include radial gradient

* cleanup gradient

* Fix learn more button display

* include use case pages

* connect subnav menu items

* extract in practice section for reuse

* use Products type

* fix type error

* add neutral option

* rework cta logic

* Fix links map

* fix use case path

* updates accent method

* fix button prop usage

* refactor customer case study

* refactor case studies component

* cleanup margin

* refactor data props

* fix offering cta

* spacing updates and introduce intro component

* adds intro interface

* removes footer border

* fix intro description color

* add revalidate code to homepage

* cleanup unused imports

* bump subnav

* makes stats optional

* adjust border radius based on customer story

* redirect /home to homepage

* fix: turtorials link

* fix: logo alignment

* fix: section background color

* feat: home reorder and tuts and docs links

* fix: flush padding

* formatting

* feat: sort use cases in nav

* fix: card overflow

* fix: adjust overflow method

* fix: padding on desktop

* fix: card container overflow padding on mobile

* fix: intro cta conditional

* fix: simplify conditional

* fix: customer logo sizing

* cleanup old data

* accept isInternalLink as arg

* remove chunk

* fix: isInternalLink usage

* fix: isInternalLink prop usage

* fix: add lang to document

* init homepage

* adds tutorials

* add offerings

* cleanup unused imports

* bump subnav

* fix: flush padding

* formatting

* fix: intro cta conditional

* fix: simplify conditional

* cleanup old data

* add consul on kubernetes to menu items

* add use case redirect

* Add use case redirect
2021-12-20 13:42:20 -08:00

72 lines
2.3 KiB
JavaScript

import './style.css'
import '@hashicorp/platform-util/nprogress/style.css'
import useFathomAnalytics from '@hashicorp/platform-analytics'
import Router from 'next/router'
import Head from 'next/head'
import rivetQuery from '@hashicorp/nextjs-scripts/dato/client'
import NProgress from '@hashicorp/platform-util/nprogress'
import { ErrorBoundary } from '@hashicorp/platform-runtime-error-monitoring'
import createConsentManager from '@hashicorp/react-consent-manager/loader'
import useAnchorLinkAnalytics from '@hashicorp/platform-util/anchor-link-analytics'
import HashiHead from '@hashicorp/react-head'
import AlertBanner from '@hashicorp/react-alert-banner'
import alertBannerData, { ALERT_BANNER_ACTIVE } from '../data/alert-banner'
import Error from './_error'
import StandardLayout from 'layouts/standard'
NProgress({ Router })
const { ConsentManager } = createConsentManager({
preset: 'oss',
})
export default function App({ Component, pageProps, layoutData }) {
useFathomAnalytics()
useAnchorLinkAnalytics()
const Layout = Component.layout ?? StandardLayout
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' }]}
>
<meta
name="og:title"
property="og:title"
content="Consul by HashiCorp"
/>
</HashiHead>
{ALERT_BANNER_ACTIVE && (
<AlertBanner {...alertBannerData} product="consul" hideOnMobile />
)}
<Layout {...(layoutData && { data: layoutData })}>
<div className="content">
<Component {...pageProps} />
</div>
</Layout>
<ConsentManager />
</ErrorBoundary>
)
}
App.getInitialProps = async ({ Component, ctx }) => {
const layoutQuery = Component.layout
? Component.layout?.rivetParams ?? null
: StandardLayout.rivetParams
const layoutData = layoutQuery ? await rivetQuery(layoutQuery) : null
let pageProps = {}
if (Component.getInitialProps) {
pageProps = await Component.getInitialProps(ctx)
}
return { pageProps, layoutData }
}