pages/_document.jsx (20 lines of code) (raw):
import Document, { Html, Head, Main, NextScript } from 'next/document';
import cn from 'classnames';
export default class MyDocument extends Document {
render() {
const pageProps = this.props?.__NEXT_DATA__?.props?.pageProps;
return (
<Html lang="en" className="no-js">
<Head>
<script dangerouslySetInnerHTML={{
__html: `document.documentElement.classList.replace('no-js', 'js');`,
}}/>
</Head>
<body className={cn(pageProps.isDarkTheme ? 'dark-theme' : '', 'nextjs')}>
<Main />
<NextScript />
</body>
</Html>
);
}
}