xref: /expo/docs/pages/_document.tsx (revision c615fa2e)
1import { Global } from '@emotion/react';
2import { BlockingSetInitialColorMode } from '@expo/styleguide';
3import Document, { Html, Head, Main, NextScript, DocumentContext } from 'next/document';
4import React from 'react';
5
6import { globalExtras } from '~/global-styles/extras';
7import { globalNProgress } from '~/global-styles/nprogress';
8import { globalPrism } from '~/global-styles/prism';
9import { globalReset } from '~/global-styles/reset';
10import { globalTippy } from '~/global-styles/tippy';
11
12export default class MyDocument extends Document<{ css?: string }> {
13  static async getInitialProps(ctx: DocumentContext) {
14    const initialProps = await Document.getInitialProps(ctx);
15    return {
16      ...initialProps,
17      styles: <>{initialProps.styles}</>,
18    };
19  }
20
21  render() {
22    return (
23      <Html lang="en">
24        <Head>
25          <Global styles={[globalReset, globalNProgress, globalPrism, globalTippy, globalExtras]} />
26        </Head>
27        <body>
28          <BlockingSetInitialColorMode />
29          <Main />
30          <NextScript />
31        </body>
32      </Html>
33    );
34  }
35}
36