lookingglass/hyperglass/ui/pages/_app.tsx
2021-01-03 23:51:09 -07:00

50 lines
1.5 KiB
TypeScript

import Head from 'next/head';
import { HyperglassProvider } from '~/context';
import { IConfig } from '~/types';
import type { AppProps, AppInitialProps, AppContext } from 'next/app';
if (process.env.NODE_ENV === 'development') {
require('@hookstate/devtools');
}
type TApp = { config: IConfig };
type GetInitialPropsReturn<IP> = AppProps & AppInitialProps & { appProps: IP };
type Temp<IP> = React.FC<GetInitialPropsReturn<IP>> & {
getInitialProps(c?: AppContext): Promise<{ appProps: IP }>;
};
const App: Temp<TApp> = (props: GetInitialPropsReturn<TApp>) => {
const { Component, pageProps, appProps } = props;
const { config } = appProps;
return (
<>
<Head>
<title>hyperglass</title>
<meta httpEquiv="Content-Type" content="text/html" />
<meta charSet="UTF-8" />
<meta name="og:type" content="website" />
<meta name="og:image" content="/images/opengraph.jpg" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, user-scalable=no, maximum-scale=1.0, minimum-scale=1.0"
/>
</Head>
<HyperglassProvider config={config}>
<Component {...pageProps} />
</HyperglassProvider>
</>
);
};
App.getInitialProps = async function getInitialProps() {
const config = (process.env._HYPERGLASS_CONFIG_ as unknown) as IConfig;
return { appProps: { config } };
};
export default App;